【问题标题】:Prevent spaces in input field on keypress event防止按键事件输入字段中的空格
【发布时间】:2015-08-16 22:01:50
【问题描述】:

我正在使用以下代码来检测按键事件中的多个键:

var down = [];
$(document).keydown(function (e) {
     down[e.keyCode] = true;
}).keyup(function (e) {
     if (down[17] && down[32]) {
          // Do something
     }
     down[e.keyCode] = false;
});

但是,此热键 (CTRL + SPACE) 旨在在输入字段具有焦点时使用。所以每当我按下组合键时,它也会在输入字段中添加一个空格。

如何防止这种情况发生?我已经研究了在输入中禁用空格的方法(如this),但我无法弄清楚如何让它仅在我的按键事件中工作。

【问题讨论】:

  • 另一种方法呢?您可以处理 keyup 事件并删除存在的任何空格。您无需检查密钥代码等。
  • e.preventDefault()
  • e.preventDefault() 是你所寻求的年轻学徒。
  • 我无法让e.preventDefault() 在我的代码中工作。如果我将它添加到 keydown 事件中,它只会禁用所有输入。将它添加到 keyup 事件中什么也没做。我听从了你的建议,@MelanciaUK。在 keyup 上,我只需删除输入字段中的最后一个字符。虽然它不会阻止添加空间,但它会立即将其删除。谢谢!

标签: javascript jquery input keypress


【解决方案1】:

你可以试试this。希望对你有帮助。

var down = [];
$(document).keydown(function (e) {
     down[e.keyCode] = true;
}).keypress(function (e) {
     if (down[17] && down[32]) {
         var $sampleTextBox = $("input#sampleTextBox");
          $sampleTextBox.val($sampleTextBox.val().replace(/\s/g, ''));
         alert($sampleTextBox.val().length)
          alert("Ctrl + Space Pressed!");
     }
     down[e.keyCode] = false;
}).keyup(function (e) {
     if (down[17] && down[32]) {
         var $sampleTextBox = $("input#sampleTextBox");
          $sampleTextBox.val($sampleTextBox.val().replace(/\s/g, ''));
         alert($sampleTextBox.val().length)
          alert("Ctrl + Space Pressed!");
     }
     down[e.keyCode] = false;
});

--

谢谢,

超级编码器

【讨论】:

    【解决方案2】:

    我最终采用了不同的方法,正如 MelanciaUK 建议的那样。

    在 keyup 事件中,它会删除输入字段中的最后一个字符。

    var down = [];
    $(document).keydown(function (e) {
         down[e.keyCode] = true;
    }).keyup(function (e) {
         if (down[17] && down[32]) {
              // Do something
              input = $(':focus');
              input.val(function (index, value) {
                   return value.substr(0, value.length - 1);
              });
         }
         down[e.keyCode] = false;
    });
    

    虽然它不会阻止添加空间,但它会立即将其删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多