Javascript关键事件执行顺序

时间:2012-02-21 18:39:18

标签: javascript jquery javascript-events

我的网页上有以下Javascript代码(使用jQuery) - 用户键入文本字段,如果字段中有值,应用程序会执行一项操作,如果字段为空则应用程序执行其他操作(因为用户)正在按删除或退格键)。我的代码看起来像这样:

$('input#textInput').keyup( function(event) {
    if($(this).val()) {
        console.log('non-empty string in the text field');
    }
    else {
        console.log('no text in the text field');
    }
}

问题是看起来回调函数在字符出现在文本字段之前执行。因此,如果该字段为空并且按下'p'键,则会出现keydown,keypress和keyup事件,执行keyup回调函数并记录'文本字段中没有文本',以及然后'p'字符出现在文本字段中,这不是我想要的。

有谁知道如何在任何关键事件上执行回调并访问文本字段中显示的值?感谢。

2 个答案:

答案 0 :(得分:0)

您可以设置超时:

$('input').keyup(function() {
  var inp = this;
  setTimeout(function() {
    console.log(inp.value);
  }, 0);
});

答案 1 :(得分:0)

input事件应该大致按照您的意愿行事。它在值更改后触发,并在大多数现代浏览器上受支持。

https://developer.mozilla.org/en-US/docs/Web/Events/input