2009-04-28 9 views
2

私はこの解決策をc#/ .netで見つけることができましたが、通常のWeb htmlでは見つけることができませんでした。すでに回答がある場合は私に知らせてください。私は質問を閉じるでしょう。Javascript Regex Only Textbox

正規表現(例:[a-zA-Z0-9])に基づいて特定の文字(例:英数字)のみを許可するテキストボックスを作成するにはどうすればよいですか?したがって、ユーザーが何か他のものを入力しようとすると、それが貼り付けられ、削除されるか、または許可されません。

<input type="text" class="alphanumericOnly"> 
+0

すでにWeb上に存在するソリューションを見つけようとしましたか?彼らはそこにいると確信しています。私はあなたのタイピストになることを本当に望んでいないので、Googleに行って、詳細について質問があったら、ここに戻ってきてください。 –

+1

ここに行く:http://www.xploredotnet.com/2007/09/restrict-alphabet-input-in-textbox_20.html –

+1

右、私はそれを行うことができたが、答えのためにSOを使用することも生成する可能性がありますディスカッション、新しいアイデアなどがあります。あなたの助けをありがとう – SeanDowney

答えて

4

基本的な機能は、この次のようになります。これは[a-zA-Z0-9]によって記述されていない任意の文字に代わる

string = string.replace(/[^a-zA-Z0-9]/g, '') 

今、あなたはあなたの要素宣言に直接それを置くことができ、次のいずれか

var inputElems = document.getElemenstByTagName("input"); 
for (var i=0; i<inputElems.length; i++) { 
    var elem = inputElems[i]; 
    if (elem.nodeName == "INPUT" && /(?:^|\s+)alphanumericOnly(?:\s+|$)/.test(elem.className) { 
     elem.onkeyup = function() { 
      this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
     } 
    } 
} 
:(あなたはクラスのヒントを使用されるような)

<input type="text" class="alphanumericOnly" onkeyup="this.value=this.value.replace(/[^a-zA-Z0-9]/g, '')"> 

それとも、クラスalphanumericOnlyですべてのinput要素にこの動作を割り当てます

jQueryまたは別のJavaScriptフレームワークでこれを行う方が簡単でしょう:

$("input.alphanumericOnly").bind("keyup", function(e) { 
    this.value = this.value.replace(/[^a-zA-Z0-9]/g, ''); 
}); 
0

input.onkeyup(function(e) { 
    this.value = this.value.replace(/\W/g, ''); 
} 

すべてのキー入力後、入力の値は任意の英数字以外の文字を剥奪されます...変数inputとして記憶されている入力を持っていると仮定すると。

0

keyupイベントで.replaceメソッドを使用すると、英数字以外の文字が入力されたときに入力がちらつきます。この文字はぎこちないように見え、自分のようなOCDユーザーには適合しません。この特定の場合

基本的なキーコードのリストを見つけることができます
$('.alphanumericOnly').keypress(function(e){ 
    var key = e.which; 
    return ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 95 && key <= 122)); 
}); 

here

クリーナーアプローチは、彼らも、以下のように、入力に到着する前に、KeyPressイベントに結合し、文字を拒否するだろうセットはあなたの特定のニーズに合っていません。