jQuery keydown事件:值延迟
问题描述:
我有以下问题:jQuery keydown事件:值延迟
我在输入字段上得到了事件侦听器。在每个keydown事件中,输入字段的值应该被验证。问题是分配给事件对象的值被延迟:
-
你有一个空的输入框,然后输入下一个字母:
$('form.registration').keydown(function(e) { var $el = $(e.target); if ($el.val() == "") { $el.closest("div.control-group").addClass("error"); } console.log($el.val()); // this logs "" });
-
你的第二个字母输入
$('form.registration').keydown(function(e) { var $el = $(e.target); if ($el.val() == "") { $el.closest("div.control-group").addClass("error"); } console.log($el.val()); // this logs the first letter (for example: "a") });
正如您所看到的值始终延迟一个字母。
我该如何解决这个问题?
答
我会建议你用keyup
来代替。这会阻止程序在用户按下按键并保持它时密集运行,只有在用户释放按键后才能处理内容。这种方法在很多情况下非常方便。
根据haynar的回答使用键控。并考虑使用模糊,或者改为使用模糊,因为用户可以在不使用键盘的情况下更改该值。 – nnnnnn 2012-07-12 07:49:48