我检测keydown和值的函数不起作用

时间:2017-05-18 08:03:37

标签: javascript jquery

所以我有一个输入栏,可以输入文字。

我试图让console.log在用户点击退格时立即运行,因为这会使输入没有值。

现在,只有在输入中没有任何值的情况下单击退格时,console.log才会运行。

目标 - 如果单击退格键,控制台应仅运行,导致输入为空。

$("#friendsNames").keydown(function(event){
          if (event.keyCode == 8) {
            if ($("#friendsNames").val() == "") {
              console.log("Works!");
            }
          }
        });
<input type="text" name="namesOfFriend" id="friendsNames" value=""  />

4 个答案:

答案 0 :(得分:2)

我建议根本不跟踪击键,而是使用input事件监视框中的内容,该事件会在内容发生变化时触发:

$("#friendsNames").on('input', function(event) {
    if (this.value.length === 0) {
        console.log("Works!");
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="namesOfFriend" id="friendsNames" value=""  />

这可确保导致输入变为空的任何交互将触发您的代码。

答案 1 :(得分:0)

据我所知,你希望console.log只在输入框中的任何值处执行,否则它不应该执行,对吧?基于此,下面是代码:

&#13;
&#13;
$("#friendsNames").on('input', function(){
          var inputValue = $(this).val();
          if(inputValue.length == 0)
              console.log("Works!");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="namesOfFriend" id="friendsNames" value=""  />
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果输入字段为空,请尝试在keyup coz上发生事件,并且您将在console.log()次调用中输入第一个字符。请尝试使用此代码或查看提及链接JSFiddle

JAVASCRIPT代码 -

$("#friendsNames").keyup(function(event) {
  if (event.keyCode == 8 && $(this).val() == "") {
    console.log("Works!");
  }
});

答案 3 :(得分:0)

$("#friendsNames").keypress(function(event) {
  if (event.keyCode == 8 || $(this).val() != "") {
    alert("Works!");
  }
});