jQuery keydown事件:价值即将延迟

时间:2012-07-12 07:41:17

标签: javascript jquery

我有以下问题:

我在输入字段上有一个事件监听器。在每个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")
    });
    
  3. 如您所见,该值始终延迟一个字母。

    我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我建议你改用keyup。当用户按下并保持密钥时,这将阻止您的程序密集运行,只有在用户释放密钥后才会处理内容。这种方法在很多情况下都非常方便。