我正在寻找一个简单的JS脚本,可以禁止在KeyUp或OnKeyPress时输入撇号。例如,每当用户按下键盘时,如果输入的是撇号(Jame's Pizza),则将其替换为空格。我不想在PHP中处理它。
我找到了一段代码,但它将JS绑定到了文本字段“Name”,而我不想这样做。我需要一个全局的解决方案。
我正在寻找一个简单的JS脚本,可以禁止在KeyUp或OnKeyPress时输入撇号。例如,每当用户按下键盘时,如果输入的是撇号(Jame's Pizza),则将其替换为空格。我不想在PHP中处理它。
我找到了一段代码,但它将JS绑定到了文本字段“Name”,而我不想这样做。我需要一个全局的解决方案。
预防按键操作总是比事后删除更好。要做到这一点,您需要拦截 keypress
事件 (keyup
太晚了):
document.getElementById('yourTextBoxID').onkeypress = function () {
if (event.keyCode === 39) { // apostrophe
// prevent the keypress
return false;
}
};
'
出现在框中,但希望 keypress 事件传播到父元素,请将 return false;
替换为 event.preventDefault();
。(评论区的 Eivind Eidheim Elseth 建议)
event.preventDefault()
而不是return false
可能更符合惯用语。 - Eivind Eidheim Elsethreturn false
相当于调用了 preventDefault
和 stopPropagation
。 - jbabeyinput
元素,并为每个元素分配keydown
和keyup
事件处理程序。如果检测到撇号,它将调用preventDefault()
方法。function listen(event, elem, func) {
if (elem.addEventListener) return elem.addEventListener(event, func, false);
else elem.attachEvent('on' + event, func);
}
listen('load', window, function() {
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i += 1) {
keyHandler(i);
}
function keyHandler(i) {
listen('keydown', inputs[i], function(e) {
if (e.keyCode === 222) { // 222 is the keyCode for apostrophe
e.preventDefault();
}
});
listen('keyup', inputs[i], function(e) {
if (e.keyCode === 222) { // 222 is the keyCode for apostrophe
e.preventDefault();
}
});
}
});