bal*_*teo 0 jquery javascript-events keydown
我有以下jQuery代码:
$("#someTextInputID").keydown(function(event){
console.log(event.keyCode);
console.log("input_box.val(): "+input_box.val());
console.log("input_box.val().length: "+input_box.val().length);
})
Run Code Online (Sandbox Code Playgroud)
让我感到困惑的是,如果我键入"750",则会记录三个keyCodes,但在键入上面的字符串后,我也会在我的控制台中获取此代码:
input_box.val():75
input_box.val().length:2
那么最后一个字符即"0"会发生什么?
很简单,最后按下的键不在.value的input,直到keyup事件.
按键时的事件顺序为:
keydown(每次按键最多触发一次,按键可用event.which,但不能进入.value)keypress(火灾每个按键至少一次(例如,如果你按住键),关键是在使用event.which,但不是在.value)keyup(每按一次按键最多触发一次,按键可用event.which,并且 在中.value)您可以通过检查对象的属性并使用该方法来检测在该阶段keydown或keypress阶段中按下了哪个键.whichEventString.fromCharCode
您可以使用的另一个有用技巧是使用setTimeout,但传递一个值0作为延迟.延迟0将回调添加到callstack的后面,这会延迟执行足够长的时间.value来更新:
$("#someTextInputID").keydown(function(event){
var that = this;
setTimeout(function () {
console.log(that.value); // will record value
}, 0);
})
Run Code Online (Sandbox Code Playgroud)