我有以下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);
})
让我感到困惑的是,如果我输入“750”,则会记录三个keyCodes,但在输入上面的字符串后我也会在我的控制台中显示:
input_box.val():75
input_box.val()。length:2
最后一个字符即“0”会发生什么?
答案 0 :(得分:6)
很简单,在.value
事件发生前,最后一次按键不在input
的{{1}}。
按键时的事件顺序为:
keyup
(每次按键时最多触发一次,密钥在keydown
中可用,但在event.which
中不可用).value
(每次按键时至少触发一次(例如,如果您按住该键),密钥在keypress
中可用,但在event.which
中不可用).value
(每次按键时最多触发一次,密钥在keyup
中可用,和在event.which
中)您可以通过检查.value
对象的which
属性并使用String.fromCharCode
来检测keydown
或keypress
阶段期间按下了哪个键方法
您可以使用的另一个有用技巧是使用Event
,但传递值setTimeout
作为延迟。延迟0
会将回调添加到callstack的后面,这会延迟执行足够长时间以使0
更新。:
.value
答案 1 :(得分:1)
使用此
$("#someTextInputID").keyup(function(event){
console.log(event.keyCode);
console.log("input_box.val(): "+input_box.val());
console.log("input_box.val().length: "+input_box.val().length);
})