如何防止分号输入html文本输入,但允许冒号?

时间:2017-07-26 13:29:48

标签: javascript jquery html ascii keycode

我想允许输入如1:10,但不允许1; 10。但是,:和;两者都对应keyCode 186,所以使用keyCode来防止;从输入到我的输入字段的键不起作用。我也研究过使用charCodes,但charCodes不具备;或:值。最后,我查看了ascii表。它们具有分号和冒号值。我有什么方法可以使用ascii表来防止;输入到我的文本框中的键,但是:允许的键?或者是否有另一种方法可以让我这样做?我还想过连续检测两个键输入,这样我就可以检测到一个移位键输入,但这似乎是一个肮脏的解决方案。

 $("input.form-1").bind({
    keydown: function(e) {
        if(e.which ===186) { //trying to disallow semicolons, which also disallows colons
            return false;
        }
    }
});

4 个答案:

答案 0 :(得分:5)

像罗里所说,你应该使用on。您也可以只检查事件中的key属性,而不是检查shiftKey。 MDN KeyboardEvent.key



$("input.form-1").on({
    keydown: function(e) {
        if(e.key === ";") { // disallow semicolon
            return false;
        }
    }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="form-1" type="text" />
&#13;
&#13;
&#13;

答案 1 :(得分:2)

首先,不要使用bind()。它在 long 之前被弃用了。请改用on()

要解决您的问题,您需要检测是否按下了shift键,您可以使用该事件的shiftKey属性:

&#13;
&#13;
$("input.form-1").on({
  keydown: function(e) {
    if (!e.shiftKey && e.which === 186) {
      return false;
    }
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="form-1" type="text" />
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您只需尝试e.keycode : 58和; 59的密钥代码即可。如果您想要任何字母或符号的键码,只需在提及代码的文本中输入。

&#13;
&#13;
<html>
<body>

<input type="text" size="40" onkeypress="myFunction(event)">

<p id="demo"></p>
<script>
function myFunction(event) {
    var x =  event.keyCode;
    document.getElementById("demo").innerHTML =  x;
}
</script>


</body>
</html>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

检查键码并键入if条件。

$("input.form-1").on({
    keydown: function(e) {
        if(e.key === ";") { // disallow semicolon
            return false;
        }
    }
});