2016-04-15 10 views
0

1-9aA-zZしか入力できないようにしたいと思います。jQueryを使用して特定のフォームフィールドで特殊文字を制限する方法

スタックオーバーフローには多くのコードがありますが、それぞれにいくつかのバグがあります。

例:

$('#username').bind('keypress', function (event) { 
    var regex = new RegExp("^[a-zA-Z0-9]+$"); 
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
    if (!regex.test(key)) { 
     event.preventDefault(); 


     return false; 
    } 
}); 

ユーザーがバックスペースを使用するか、キーを削除することが防止されます!

+0

'ユーザーがキーをバックスペースを使用するか、または削除するために阻止される!!!'いいえ、彼は」にISN投稿されたコードに関するもしそうなら、どのブラウザでテストしていますか? –

+0

私は 'firefox 43.0.1'を使用しています。 –

+0

あなたは正しいです、FFはそれを防ぎます –

答えて

0

あなたは(jQueryのでは正規化されている)event.whichを機密レベル変更、それをフィルタリングできので、あなたのコードは次のようになります。

var regex = /^[a-zA-Z0-9]+$/; 

$('#username').on('keypress', function(event) { 
    if (event.which === 8 || event.which === 0) return; 

    var key = String.fromCharCode(event.which); 
    return regex.test(key); 
}); 
+0

私が私の答えで示唆したように、あなたは 'input 'に' pattern = "[a-zA-Z0-9] +" 'を提案することもできます。 – Tushar

+0

@Tushar Yaは検証のためにSafari AFAIKでまだサポートされていません。その場合は –

+0

となります。その場合はJSバリデータがあります。 :)。ほぼすべての最新のブラウザがHTML5をサポートしています。 – Tushar