我有this代码:
<input id="inputBox" />
$('#inputBox').keypress(function(event) {
console.log($(this).val());
});
我期望的是,当我在输入框中插入一个值时,在控制台上打印它。相反,在第一个值,我得到(an empty string)
,第二个值,第一个值,依此类推......
为什么呢?我该如何解决?我还阅读了官方document,但没有关于这种行为!
答案 0 :(得分:2)
不......
keypress
在指定的值之前被解雇
像所有其他事件一样(点击,提交等等......),你可以取消默认行为和“东西”
$('#inputBox').keypress(function(event) {
return false; // this will disable the new value assignment
});
您可以找到使用event.which
点击的按钮并使用它。
示例:
<input id="gdoron" />
$('#gdoron').keypress(function(e){
var value = $(this).val();
alert(value);
alert(value + String.fromCharCode(e.which))
})
<强> JSFiddle DEMO 强>
答案 1 :(得分:2)
这里的问题是使用触发不同键盘事件的点。要实现您的目标,请改用keyup
。
$('#inputBox').keyup(function(event) {
console.log($(this).val());
});
答案 2 :(得分:2)
所有关于事件发生的时间。以下是它的工作原理:
onKeyDown - &gt; onKeyPress - &gt;输入值已修改 - &gt;的onkeyup
如果你处理onKeyUp事件,你将保证在所有浏览器中输入元素中都有正确的值。
如果您需要有关修改键和跨浏览器实现的信息,QuirksMode会有very detailed article。
答案 3 :(得分:0)
有3 different key*-events。听起来像keyup()
是你应该使用的。