【发布时间】:2017-01-13 12:59:06
【问题描述】:
当从输入中删除预定字符时,keyup 事件会触发两次。我怎样才能防止这种情况发生?
HTML
<input type="text" id="search">
JS
var block = {
'ch1': {
'key':'/',
'keycode':'191'
},
'ch2': {
'key':':',
'keycode':'186'
},
'ch3': {
'key':'=',
'keycode':'187'
}
}
$('#search').on('keyup',function(){
console.log(checkChar($(this)));
});
function checkChar($this){
var txt = $this.val(),
flag = true;
for(var i=0; i<txt.length; i++) {
$.each(block,function(k,v){
if (txt[i] === v.key) {
$this.val(txt.slice(0,-1));
flag = false;
return false;
}
});
}
return flag;
}
JSBIN
【问题讨论】:
-
问题是当你松开shift键时,也会产生一个keyup事件。尝试过滤您感兴趣的键。
标签: javascript jquery preventdefault keyup onkeyup