防止按键事件输入字段中出现空格
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,但会立即将其删除。
我正在使用以下代码检测按键事件中的多个按键:
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,但会立即将其删除。