我需要找到一种方法来检测空格是否被删除或退格,如果是这种情况,则运行一个函数。我正在用 JavaScript / jQuery 做这个。
我知道我可以通过以下方式获得删除或退格键按下:
$(this).keyup(function(event) {
event.keyCode
但是,我不知道如何判断 delete 或 backspace 命令是否删除了空格?
非常感谢任何建议。
我需要找到一种方法来检测空格是否被删除或退格,如果是这种情况,则运行一个函数。我正在用 JavaScript / jQuery 做这个。
我知道我可以通过以下方式获得删除或退格键按下:
$(this).keyup(function(event) {
event.keyCode
但是,我不知道如何判断 delete 或 backspace 命令是否删除了空格?
非常感谢任何建议。
绑定到 keydown 并比较前后的值,看看它是否减小了大小。
$(input).keydown(function(){
var currVal = this.value, self = this;
setTimeout(function(){
if ( currVal.length > self.value.length ) {
console.log(currVal.length - self.value.length + " characters have been removed.");
}
},0);
});
更新示例:
$("input").keydown(function() {
var currVal = this.value,
self = this;
setTimeout(function() {
if (currVal.length - self.value.length === 1) {
var origVal = $.grep(currVal.split(""),function(val){
return val === " ";
});
var newVal = $.grep(self.value.split(""),function(val){
return val === " ";
});
if ( origVal.length != newVal.length ) {
console.log("a space was removed");
}
}
}, 0);
});
见这里:http: //jsfiddle.net/Txseh/
(function(){
var currentWhitespaceCount;
$("input").keyup(function(e){
var newCount = ($(this).val().match(/\s/g) || []).length;
if (newCount < currentWhitespaceCount)
alert("You removed one or more spaces, fool.");
currentWhitespaceCount = newCount;
});
})();
它跟踪输入中当前空白字符的数量,如果数字下降,它会发出警报(或做任何你想做的事情)。
预先缓存该值(在按键上设置一个值)并与按键后的值进行比较。这是确定一个或多个空格已被删除的唯一方法。对键的任何检查都依赖于您能够找出哪些可能的键可以去除空间,并且可能会留下孔。
例如,选择一个单词的最后一个字母及其后面的空格,如果我们按下最后一个字母,它将删除空格。但是按下的键不是退格键或删除键。
实际上这是我的代码http://jsbin.com/atuwez/3/edit
var input = $('#input'),
afterLength,
beforeLength;
input.on({
'keydown': function () {
beforeLength = input.val().split(/\s/).length;
},
'keyup': function(event) {
var key = event.keyCode || event.charCode;
if( key == 8 || key == 46 ) {
afterLength = input.val().split(/\s/).length;
console.log(beforeLength == afterLength);
}
}
});