Keydown事件无法正常工作

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

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

所以:

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

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

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

使用keydown的keyup

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