【发布时间】:2011-02-18 01:00:08
【问题描述】:
我开发了注册表单,它有用户名字段,它需要像 twitter 用户名检查(实时检查)。我已经开发了每个文本框键我使用 jquery 将 textbox.Text 传递到返回的页面用户名是否存在
在文本框的 onkeyup 上调用了以下 JavaScript 方法“Check()”:
function Check() {
var userName = $('#<%= TextBox1.ClientID %>').val();
if (userName.length < 3) {
$('#checkUserNameDIV').html("user name must be between 3 and 20");
return;
}
$('#checkUserNameDIV').html('<img src="loader.gif" />');
//setTimeout("CheckExistance('" + userName + "')", 5000);
CheckExistance(userName);
}
function CheckExistance(userName) {
$.get(
"JQueryPage.aspx", { name: userName },
function(result) {
var msg = "";
if (result == "1")
msg = "Not Exist " + '<img src="unOK.gif" />';
else if (result == "0")
msg = "Exist" ;
else if (result == "error")
msg = "Error , try again";
$('#checkUserNameDIV').html(msg);
}
);
}
但我不知道这是否是最好的方法?特别是我会检查每个键位..
是否有任何设计模式可以解决这个问题> 或者没有这样做的好习惯?
【问题讨论】:
-
如果您的应用程序可以处理每个 onKeyUp... 当然,为什么不呢。但是最好设置一个小的 timeOut(并且一个新的按键会用一个新的计时器替换计时器),或者放置一个按钮“检查用户名”和/或检查用户何时离开表单输入字段(onBlur),假设它不是最后一个字段。
-
我想在用户编写用户名(如 twitter 用户名)期间实时生成它。我已经在 key up 中完成了它,但是通过每个 key up 请求 db 来进行检查是否有很好的性能?你看到什么场景使用时间?