2012-01-24 10 views
1

私はJavaScriptで作業しています。テキストフィールドに文字だけが許されているかどうかの検証を追加したいと思います。Javaスクリプト検証シンボル%はテキストフィールドで許可してはいけません

文字と一緒に、私はキーコード37の左矢印キーを許可しました。しかし、%のキーコードも37なので、これは問題を作り出しています。%記号を許可したくありません。

両方のキーコードが37なので、どのように%と左矢印キーを区別することができますか教えてください。

+0

SQL生成の目的で入力をサニタイズしようとしているようです。私はあなたがそれについて知らないことを示唆しているのではなく、友好的なリマインダ - サーバ側でも同じロジック**を適用する**。 –

+0

「文字のみ」はどういう意味ですか? "%"は文字です。 「英数字だけ」という意味ですか? – nnnnnn

+0

はい、英数字を意味します。 –

答えて

1

から詳細については、こちらをご覧ください。例:

$('#test').keypress(function(oEvent) { 
    if (oEvent.charCode == 37) { 
     return false; 
    } 
}); 

jsfiddleも参照してください。

=== === UPDATE追加のInternet Explorerのサポートについては

$('#test').keypress(function(oEvent) { 
    var iCode = typeof oEvent.charCode == 'number' ? oEvent.charCode : oEvent.keyCode; 
    if (iCode == 37) { 
     return false; 
    } 
}); 

はまた、このjsfiddleを参照してください。

0

検証のためにキー入力を制限しないでください。人々はそれを克服するためにコピー/ペーストすることができます。

あなたは入力を検証するためにRegexを使用する必要があります。あなたはそれが37ではないのです「左arrow'キーのために、文字コードは37である「パーセント」キーを押すと

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

+0

keypressの検証の代わりに正規表現ではなく、onchange、onblur、onsubmitのいずれかです。 (もちろん、変更/サブバリデーションにregexを使うことはできますが、そうする必要はありません) – nnnnnn

0

ユーザーがフォームを送信した後でユーザー入力を検証する必要があります。データがサーバーに送信される前に、フォームの "onsubmit"属性が実行される関数を記述するか、フォームアクションを "action = 'javascript:someFunction()'に設定することができます。キーストロークを許可しないと、ユーザーインターフェイスはエンドユーザーにとってより複雑で煩わしくなり、xss攻撃や注入攻撃のセキュリティリスクが発生します。無効な場合はエラーメッセージを返し、サーバー側でもう一度データの検証を行い、データをサニタイズすることをお勧めします。

+0

キーストロークの防止はUIをより面倒にする傾向にあることに同意しますが、なぜそれがセキュリティリスクを引き起こすと思いますか? – nnnnnn

+0

これがデータの妥当性を検証する唯一の方法であれば、無効なデータを送信するためのJavaScriptの周りにはいくつかの方法があります。 – Ethan

+0

'onsubmit'の検証と比較して、キーストロークを防ぐために何をするのですか?クライアントでの検証方法(クライアントでの検証方法)に関係なく、常にサーバ上で検証する必要がありますか? – nnnnnn

関連する問題