有一个输入元素
<input type="text">
如果我在其上添加keydown
事件,它将使用状态x - 1输入值,例如
var x = document.getElementsByTagName("input")[0];
x.addEventListener("keydown",function(){
alert(x.value);
},false);
如果我输入&#34; a&#34; ,它会打印空字符串,当我添加&#34; b&#34;它不打印&#34; ab&#34;但是&#34; a&#34; (州 - 1)
有没有简单的方法来检索不是以前的当前值?
答案 0 :(得分:2)
使用input
代替keydown
事件。
如果您需要较早的browser support,那么您还应该听取keyup
和mouseup
(拖放)事件。
答案 1 :(得分:2)
使用keyup
事件或keypress
事件。
原因很简单,当你打字时,有三种状态。
按下并按住键(即使很短的时间)。此处,输入字段尚未更新。这是keydown
keyup
是释放密钥的时间。这是输入字段更新的时间。
keypress
keydown
和keyup
合二为一。 (对于字母数字键)
答案 2 :(得分:1)
如其他答案中所述,如果您不需要取消活动,则可以使用keyup
或keypress
或input
。
如果您确实需要取消事件(有条件地),那么必须使用keydown。
var x = document.getElementsByTagName("input")[0];
x.addEventListener("keydown",function(e){
//alert(x.value);
console.log(x.value + String.fromCharCode(e.which || e.keyCode);
},false);
该事件不支持字符值,但您可以从keyCode接收它。