我有以下问题:
我在输入字段上有一个事件监听器。在每个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")
});
如您所见,该值始终延迟一个字母。
我该如何解决这个问题?
答案 0 :(得分:1)
我建议你改用keyup
。当用户按下并保持密钥时,这将阻止您的程序密集运行,只有在用户释放密钥后才会处理内容。这种方法在很多情况下都非常方便。