我正在寻找一个简单的JS来禁止撇号onKeyUp或OnKeyPress的东西。例如,每当用户按下一个键时,如果它是撇号(Jame's Pizza),则用空格替换它。我不想在PHP中处理它 我发现了一个代码,但它将JS与我不想要的文本域名绑定在一起。我需要一些全球性的东西,
答案 0 :(得分:7)
防止击键总是比追溯删除它更好。要实现此目的,您需要截取keypress
事件(keyup
为时已晚):
document.getElementById('yourTextBoxID').onkeypress = function () {
if (event.keyCode === 39) { // apostrophe
// prevent the keypress
return false;
}
};
如果您只想阻止'
出现在框中,但希望将按键事件传播到父元素,请将return false;
替换为event.preventDefault();
。 (Eivind Eidheim Elseth在评论中提出)
答案 1 :(得分:0)
请查看以下功能。它抓取页面上的所有input
元素,并为每个元素分配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();
}
});
}
});