2012-07-12 118 views
0

我有以下问题:jQuery keydown事件:值延迟

我在输入字段上得到了事件侦听器。在每个keydown事件中,输入字段的值应该被验证。问题是分配给事件对象的值被延迟:

  1. 你有一个空的输入框,然后输入下一个字母:

    $('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 "" 
    }); 
    
  2. 你的第二个字母输入

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

正如您所看到的值始终延迟一个字母。

我该如何解决这个问题?

+1

根据haynar的回答使用键控。并考虑使用模糊,或者改为使用模糊,因为用户可以在不使用键盘的情况下更改该值。 – nnnnnn 2012-07-12 07:49:48

回答

1

我会建议你用keyup来代替。这会阻止程序在用户按下按键并保持它时密集运行,只有在用户释放按键后才能处理内容。这种方法在很多情况下非常方便。