【问题标题】:Keydown event is not working properlyKeydown 事件无法正常工作
【发布时间】:2011-07-06 11:01:34
【问题描述】:

如果文本框的值大于 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)
       }
      });

【问题讨论】:

标签: jquery


【解决方案1】:

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

所以:

  • 第一次触发事件时,您将第一个字符插入文本框但 DOM 还不知道这一点,所以$(this).val().length 仍然是 0; p>

  • 第二次触发事件时,您将第二个字符插入到文本框中,$(this).val().length 与上次相比为 1。

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

【讨论】:

    【解决方案2】:

    使用 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)
           }
          });
    

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多