4

アポストロフィ onKeyUp または OnKeyPress のようなものを禁止する単純な JS を探しています。たとえば、ユーザーがキーを押すたびに、それがアポストロフィ (Jame's Pizza) の場合はスペースに置き換えます。コードを見つけたPHPで処理したくありません
が、JSをテキストフィールドNameに結び付けますが、これは望ましくありません。グローバルなものが必要で、

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/

がボックスに表示されないようにするだけで、キープレス イベントを親要素に伝播させたい場合は、を'に置き換えます。(コメントでEivind Eidheim Elsethが提案)return false;event.preventDefault();

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