检测输入值

时间:2016-05-12 19:51:49

标签: javascript events

有一个输入元素

<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)

有没有简单的方法来检索不是以前的当前值?

3 个答案:

答案 0 :(得分:2)

使用input代替keydown事件。

如果您需要较早的browser support,那么您还应该听取keyupmouseup(拖放)事件。

答案 1 :(得分:2)

使用keyup事件或keypress事件。

原因很简单,当你打字时,有三种状态。

  1. 按下并按住键(即使很短的时间)。此处,输入字段尚未更新。这是keydown

  2. keyup是释放密钥的时间。这是输入字段更新的时间。

  3. keypress keydownkeyup合二为一。 (对于字母数字键)

答案 2 :(得分:1)

如其他答案中所述,如果您不需要取消活动,则可以使用keyupkeypressinput
如果您确实需要取消事件(有条件地),那么必须使用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接收它。