繁体   English   中英

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

[英]How to prevent a semicolon from being entered into html text input, but allowing a colon?

我想允许输入如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;
        }
    }
});

像罗里说,你应该使用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" /> 

首先,不要使用bind() 很久以前就被弃用了。 使用on()代替。

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

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

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

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

检查键码并键入if条件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM