0

我为我的注册表单编写了一个脚本,如果用户名输入字段上有一个 keyup 事件,则 javascript 检查输入的用户名是否有效,如果是,则调用一个 ajax 函数来检查其可用性。

它工作正常。但是用户名可以在不做key up的情况下输入,对于这些情况怎么办?例如,可以通过单击输入字段并选择浏览器建议的名称来输入用户名,或者使用自动表单填充器来输入用户名。在这些情况下没有“keyup”,那么这些情况该怎么办?

如果我遗漏了一些案例,请告诉我。

4

3 回答 3

4

也将回调绑定到change事件。

代替$('username_input').keyup$('username_input').bind('keyup', callback)使用

$('username_input').bind('keyup change blur', function () {
    //
})

[更新]

如果您不使用 jQuery,请尝试

function checkUserName() {
   // Ajax validation code
}
userinput = document.getElementById('yourusernameinputid');
userinput.onclick = userinput.onchange = userinput.onblur = checkUserName;

顺便说一句,您应该尝试学习 jQuery。它可以为您节省大量时间,并帮助您在更短的时间内制作更好的网站。

[更新 2]

看起来没有办法通过使用事件的自动填充来检测更改。您需要设置一个计时器以固定间隔自动检查您的输入并检查您的最后一个值。

(function() {
   // It is always better to use a closure to prevent the value from 
   // getting overwritten by another piece of code
   var value = '';
   setInterval(2000, function() {
      if (userinput.value != value) {
           checkUserName();
           value = userinput.value;
      }
   });
})();
于 2012-07-15T17:13:29.377 回答
0
  • 在以下情况下测试用户名:
    • 发生模糊事件(当文本字段失去焦点时),并且
    • 在用户填写表单之前,或
    • 发生更改事件(我认为这是最好的)。
于 2012-07-15T17:16:57.263 回答