键入HTML textBox时禁止撇号

时间:2012-08-17 14:58:56

标签: javascript html

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

2 个答案:

答案 0 :(得分:7)

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

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

http://jsfiddle.net/TSB9r/

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

答案 1 :(得分:0)

请查看以下功能。它抓取页面上的所有input元素,并为每个元素分配keydownkeyup个事件处理程序。如果他们检测到撇号,它将调用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();
      }
    });
  }
});