停止键入表单中的字符

Dam*_*mon 4 javascript forms keyboard jquery javascript-events

我有这个jquery阻止输入键被按下,我准备它接受一系列不允许的kepresses ..

    $('.form input').bind('keypress', function(e) {
        var keys = [13];
        for (var i = keys.length; i--;){
            if(e.keyCode===keys[i]){
                return false;
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

我想对|角色做类似的事情,但因为它是220的移位而我不需要停止\从被输入到表单中,我如何限制该角色或使用修饰键?(当然也将在服务器端处理它).

我也知道特殊字符的键盘布局可能因键盘到键盘而有所不同,因此可能需要关注结果字符而不是键本身(不完全确定),但我不知道想要引入大量的开销

T.J*_*der 6

keypress事件是关于字符,而不是钥匙.您可以直接与()keyCode的字符代码进行比较,无需担心shift键被关闭(并且它可能不在所有键盘上)."|""|".charCodeAt(0)

示例 - 实时复制 | 来源:

HTML:

<p>Try to type | in the box below.</p>
<input id="theInput" type="text" size="80">
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

jQuery(function($) {

  var keys = [13, "|".charCodeAt(0)];
  $("#theInput").keypress(function(e) {
    var index;

    for (index = 0; index < keys.length; ++index) {
      if (keys[index] === e.keyCode) {
        display("Denied!");
        return false;
      }
    }
  });

  function display(msg) {
    $("<p>").html(msg).appendTo(document.body);
  }
});
Run Code Online (Sandbox Code Playgroud)

或者正如bažmegakapa所指出的,因为你已经在使用jQuery,你可以使用它的inArray功能:

jQuery(function($) {

  var keys = [13, "|".charCodeAt(0)];
  $("#theInput").keypress(function(e) {
    if ($.inArray(e.keyCode, keys) !== -1) {
      display("Denied!");
      return false;
    }
  });

  function display(msg) {
    $("<p>").html(msg).appendTo(document.body);
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 我从来没有听说过character.charCodeAt(0),但那太棒了.节省了这么多时间,并且比阅读一堆数字密钥码更容易阅读代码. (3认同)