javascript - 停止将字符输入到表单中

标签 javascript jquery forms keyboard jquery-events

我有这个 jQuery 可以阻止按下回车键,我已经准备好接受一系列不允许的按键..

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

我想用 | 字符做类似的事情,但因为它是 220 的移位,我不需要阻止 \ 被输入到表单中,如何限制该字符或使用修改键? (当然也会在服务器端处理它)。

我也知道特殊字符的键盘布局可能因本地化不同的键盘而异,因此可能有必要关注生成的字符而不是键本身(对此并不完全确定),但我不想引入大量开销

最佳答案

keypress 事件是关于字符,而不是按键。您可以直接将keyCode"|"的字符编码("|".charCodeAt(0))进行比较,不用担心关于按下 Shift 键(可能并非所有键盘上都有)。

示例 - live copy | source :

HTML:

<p>Try to type | in the box below.</p>
<input id="theInput" type="text" size="80">

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);
  }
});

或作为 bažmegakapa points out ,因为你已经在使用 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);
  }
});

关于javascript - 停止将字符输入到表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399003/

相关文章:

javascript - 正则表达式美化缩小的 CSS

javascript - 尝试了解 WebRTC 信令 channel

jquery - 使用 jQuery clone 只复制 1 行的类名

javascript - 单击数据表中的单元格时获取列名和行名

html - 如何使用输入设置不同的 td 大小?

javascript - 提交 HTML 表单而不打开新窗口

Javascript 间隔和 iframe

javascript - 将网络图与 dc.js/crossfilter.js 集成

javascript - 在 Javascript 中更改了选定的索引

jQuery 可用时间选择器