防止按键事件输入字段中出现空格

Prevent spaces in input field on keypress event

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

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) 是在输入字段具有焦点时使用的。因此,每当我按下组合键时,它还会在输入字段中添加一个 space。

如何防止这种情况发生?我已经研究了在输入中禁用 spaces 的方法(比如 this),但我不知道如何让它只在我的按键事件中工作。

您可以试试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;
});

--

谢谢,

超级编码员

我最终使用了一种不同的方法,正如 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;
});

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