Javascript键事件执行顺序

Javascript键事件执行顺序,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我的网页上有以下带有jQuery的Javascript代码-用户键入一个文本字段,如果字段中有值,应用程序会做一件事,如果字段是空的,则会做另一件事,因为用户按下了delete或backspace键。我拥有的代码如下所示: $('input#textInput').keyup( function(event) { if($(this).val()) { console.log('non-empty string in the text field'); }

我的网页上有以下带有jQuery的Javascript代码-用户键入一个文本字段,如果字段中有值,应用程序会做一件事,如果字段是空的,则会做另一件事,因为用户按下了delete或backspace键。我拥有的代码如下所示:

$('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和keypup事件,执行keypup回调函数并记录“文本字段中没有文本”,然后“p”字符出现在文本字段中,这不是我想要的


有人知道我如何对任何键事件执行回调并访问文本字段中显示的值吗?谢谢。

您可以设置超时:

$('input').keyup(function() {
  var inp = this;
  setTimeout(function() {
    console.log(inp.value);
  }, 0);
});
输入事件应该大致执行您想要的操作。它在值更改后触发,并且在大多数现代浏览器上都受支持


我认为,keypress事件在值更新后触发。编辑oops否它不执行keyup回调函数并记录“文本字段中没有文本”-我尝试了多次,对于keyup,它在文本字段中打印了非空字符串。