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

Geo*_*hen 5 html javascript jquery ascii keycode

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

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

Sve*_*ode 5

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

$("input.form-1").on({
    keydown: function(e) {
        if(e.key === ";") { // disallow semicolon
            return false;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="form-1" type="text" />
Run Code Online (Sandbox Code Playgroud)