Keydown事件无法正常工作

时间:2011-07-06 11:01:34

标签: jquery

我的要求是,如果文本框值大于0,则取消选中该复选框。但是在两次关键操作后取消选中。我无法确定错误......请有人帮助我。

     $('#'+QID+' TABLE TBODY TR').find("input[type='text']").live('keydown',function()
      {
       if($(this).val().length > 0)
       {
            $('#'+ExQID+' TABLE TBODY TR').siblings('TR').find(':checkbox').prop('checked',false)
       }
      });

2 个答案:

答案 0 :(得分:5)

keydown在DOM中的值更改之前触发。

所以:

  • 第一次触发事件时,您将第一个字符插入文本框但DOM尚未知道,因此$(this).val().length仍为0;

  • 第二次事件触发时,您将第二个字符插入文本框,$(this).val().length从上次开始为1。

而是使用keyup事件,该事件在文本框值更新后触发。

答案 1 :(得分:0)

使用keyup而不是keydown

 $('#'+QID+' TABLE TBODY TR').find("input[type='text']").live('keyup',function()
      {
       if($(this).val().length > 0)
       {
            $('#'+ExQID+' TABLE TBODY TR').siblings('TR').find(':checkbox').prop('checked',false)
       }
      });