2012-03-05 8 views
0

私はここでonkeypressによってトリガされたコードを持っています...私はそれが入力された特殊文字があるときは常に警告を出します。アラート以外にも、ユーザーがフィールドに特殊文字を入力すると、入力された特殊文字を消去して、フォーカスをフィールドに戻す必要があります。私はこの問題を揺するように見えることはできません。手伝って頂けますか?事前のおかげで:Dは、このJavaScriptによるフィールド検証 - onkeyup?

<input type="text" name="name" onkeyup="ei(this)"> 
+2

はどうなりますか? – Blender

+0

最後の文字を削除するために 'e.value = e.value-1'を使うことはできません:' -'演算子は数値の減算です。最後の文字を削除するには 'e.value = e.value.slice(0、-1)'を使うことができますが、最後の文字を削除することは、カーソルが文字列の最後にない場合には実際には適切ではありませんユーザーが途中で文字を挿入している可能性があります)。 – nnnnnn

答えて

1

を使いたいですか?それは(私はキーコードを見つけるためにthis siteを使用)​​またはkeypressイベントを使用したほうが良いし、それをキャンセルしたい:

function ei (event) { 
    event = event || window.event; 

    switch (event.keyCode) { 
     case 47: //. 
     case 33: //! 
     //etc 
      event.preventDefault(); //cancel the current action, which will stop it writing out to the textbox 
      break; 
     default: 
      break; 
    } 
} 

私はあなたではなくあなたをフックするインラインJavaScriptを持つよりも、jQueryのに見てもお勧めしますまた、たくさんのコードを扱うのに役立つように、jQuery Validation pluginを見てください。

1

e.value = e.value-1;よう

function ei(e) 
{ 
    var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?"; 
    for (var i = 0; i < e.value.length; i++) { 
    if (iChars.indexOf(e.value.charAt(i)) != -1) { 
     alert ("Please do not use special characters."); 
     e.value = e.value-1; 
     e.focus(); 
     return false; 
    } 
    } 
} 

これは、テキストフィールドに呼び出されますが..あなたが何を考えてやっていません。

あなたはおそらく、あなたがkeyupイベントを使用してわざわざなぜsubstr()

+1

または '.slice()'はエンドポイント( '.substr()'がブラウザ間で一貫して動作しない)に対して負の数を受け入れるためです。 – nnnnnn

2

ここではいくつか奇妙なことが起こっています。

  1. HTML要素のonkeyup属性は使用しないでください。イベントリスナー関数をバインドすると、コードがモジュール化されます。
  2. 他の人のように、あなたはそのような減算演算子を使用することはできません。
  3. おそらく、誰かが無効な文字を入力するたびに警告したくないでしょう。それはユーザーを怒らせ、怒らせるだけです。私はただコンソールにそれを記録していますが、入力要素の隣にエラーテキストを置くことについて考えるべきです。

    $(function() { 
        function ei(e) { 
        var iChars = "[email protected]#$%^&*()+=-[]\\\';,./{}|\":<>?"; 
        for (var i = 0; i < this.value.length; i++) { 
         if (iChars.indexOf(this.value.charAt(i)) != -1) { 
         console.log("Please do not use special characters."); 
         this.value = this.value.slice(0, this.value.length - 1); 
         this.focus(); 
         return false; 
         } 
        } 
        } 
    
        $('#hurp').on('keyup', ei); 
    }); 
    

そして、あなたの入力要素にIDを追加します。

<input type="text" name="name" id="hurp">​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

このJSFiddleを参照してください:私は `.`キーを押した場合http://jsfiddle.net/QgLcB/

関連する問題