禁用输入字段中的某些字符

Nut*_*tic 18 html javascript jquery html5

我发现了一些类似的指令,但没有一个有用,所有这些都是特殊的字符或数字.

我需要使用户类型只有1,2,3,4,5,N,O,A,B,C.应限制所有其他字符.

我可以用任何方式自己选择限制/允许的字符作为输入吗?

  • 不太熟悉javascript.

all*_*kim 29

使用JQuery,

$("input").keypress( function(e) {
    var chr = String.fromCharCode(e.which);
    if ("12345NOABC".indexOf(chr) < 0)
        return false;
});
Run Code Online (Sandbox Code Playgroud)

没有JQuery

document.getElementById("foo").onkeypress = function(e) {
    var chr = String.fromCharCode(e.which);
    if ("12345NOABC".indexOf(chr) < 0)
        return false;
};
Run Code Online (Sandbox Code Playgroud)

对于一个衬垫,来自@mplungjan和@matthew-lock的评论

document.querySelector("#foo").onkeypress = function(e) {
    return "12345NOABC".indexOf(String.fromCharCode(e.which)) >= 0;
};
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的做法.它不会阻止在字段中粘贴不良字符. (2认同)

Pra*_*han 14

试试这个

$(function(){
  $('#txt').keypress(function(e){
    if(e.which == 97 || e.which == 98 || e.which == 99 || e.which == 110 || e.which == 111 || e.which == 65 || e.which == 66 || e.which == 67 || e.which == 78 || e.which == 79 || e.which == 49 || e.which == 50 || e.which == 51 || e.which == 52 || e.which == 53){
    } else {
      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 type='text' id='txt' value='' onpaste="return false" />
Run Code Online (Sandbox Code Playgroud)

2018年3月9日更新

$(function(){
  $('#txt').keypress(function(e){
    // allowed char: 1 , 2 , 3, 4, 5, N, O, A, B, C
    let allow_char = [97,98,99,110,111,65,66,67,78,79,49,50,51,52,53];
    if(allow_char.indexOf(e.which) !== -1 ){
      //do something
    }
    else{
      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 type='text' id='txt' value='' onpaste="return false" />
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的做法.它不会阻止在字段中粘贴不良字符. (3认同)

and*_*ies 6

目前还不是 100% 清楚您是否想要限制使用无效值提交的表单,或者从字面上阻止用户键入这些值。其他答案涉及后者,我认为这就是您的意思,但是有些人到达这里(像我一样)只是想阻止表单提交。

在这种情况下:

使用元素pattern上的属性input

<input pattern="[REGEX HERE]">
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation

https://regex101.com/