4

我正在寻找一个简单的也许 JS 来禁止撇号 onKeyUp 或 OnKeyPress 之类的东西。例如,每次用户按下一个键时,如果它是撇号(Jame's Pizza),则用空格替换它。我不想在 PHP 中处理它
我找到了一个代码,但它将 JS 绑定到我不想要的文本字段名称。我需要一些全球性的东西,

4

2 回答 2

7

防止击键总是比追溯删除它更好。为此,您需要拦截keypress事件(keyup为时已晚):

document.getElementById('yourTextBoxID').onkeypress = function () {
    if (event.keyCode === 39) { // apostrophe
        // prevent the keypress
        return false;
    }
};​

http://jsfiddle.net/TSB9r/

如果您只想阻止'出现在框中,但希望 keypress 事件传播到父元素,请将 替换return false;event.preventDefault();。(由 Eivind Eidheim Elseth 在评论中建议)

于 2012-08-17T15:08:29.203 回答
0

请找到以下功能。它抓取页面上的所有元素,并为每个input元素分配事件处理程序。如果他们检测到撇号,它将调用该方法..keydownkeyuppreventDefault()

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();
      }
    });
  }
});
于 2012-08-17T15:12:33.103 回答