2011-07-06 138 views
1

我的要求是如果文本框值大于0,则取消选中该复选框。但是,在两次关闭后,它将被取消选中。我无法识别错误...请有人帮助我。在DOM中值改变之前Keydown事件无法正常工作

 $('#'+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) 
     } 
     }); 
+0

我认为这是关系到http://stackoverflow.com/questions/6581946/how-to-restore-textbox-data – andyb

+1

@ ApoY2k:56%是完全可以接受的。 –

+0

[使用jquery的文本框文本捕获总是'后面的一个字符']的可能重复(http://stackoverflow.com/questions/1676435/text-box-text-capture-using-jquery-always-one-character-behind ) –

回答

5

​​火灾。

所以:

  • 第一次事件触发,你将第一个字符到文本框中但DOM不知道这又,所以$(this).val().length仍然是0;

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

相反,使用keyup情况下,文本框的值更新后触发。

+0

+1很好的解释 – andyb

+0

@andyb:谢谢! –

0

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