2016-11-20 12 views
0

入力ボックスに入力された文字を大文字に強制する次のjqueryがあります。jQueryは入力に入力できる文字を制限します

jQuery(document).ready(function() { 
    jQuery('.uppercase').keyup(function() 
    { 
     jQuery(this).val(jQuery(this).val().toUpperCase()); 
    }); 
}); 

英語の英数字のみを入力できるように入力を制限したいと考えています。これに取り組む最善の方法は何ですか?

+3

[類似の質問はこちら](http://stackoverflow.com/questions/895659/how-do-i-block-or-restrict-special-characters-from-input-fields-with-jquery)私は信じています答えはあなたが探しているものです。 – Jackanapes

答えて

0

を使用して、各特殊文字を無効に置き換えることができます。

jQuery(document).ready(function() { 
    jQuery('.uppercase').keyup(function() 
    { 
     jQuery(this).val(jQuery(this).val().replace(/[^\w\s]/gi, '').toUpperCase()); 
    }); 
}); 

通常の説明で指定されたものを無効な文字( '')に送信しています。

正規表現であなたがないを意味し、キー^英数字空白文字を意味\ sのを意味ワット\キー見ることができます。だからあなたは、英数字ではなく、スペースではないものすべてを無効にするために送信しています。

フィールドに空白を入れたくない場合は、RegEx内の\ sを削除してください。

PS。これはユーザーが特殊文字を送信するのを妨げるものではなく、サーバー側をチェックする必要があります。

同等のブタ掃除機の正規表現は次のようになります。

/\W/gi 

あなたは、これはあなたがやりたい

+0

それはかなり密なコードです。そこに何が起こっているのかを簡単に説明すると役に立ちます。 – Ouroborus

+0

通常のexplessionで指定されたものを無効な文字( '')に置き換えます。 正規表現では、キー*^*は* not *を意味し、キー* \ w *は英数字*を意味し、* \ s *は空白を意味します。 英数字ではなく、スペースではないものをすべて無効にするために送信しています。 フィールドでスペースを削除する場合は、\ sを削除します。 PS。これは、ユーザーが特殊文字を送信することを妨げるものではなく、サーバー側でチェックする必要があります –

0

非常に単純な方法を意味しているのかを確認するには、上記のリンクをチェックすることができ、にあります​​イベントをキャッチして、キーのASCIIコードを確認します。あなただけそして、それは0x30ASCII '0')と0x39ASCII '9')の間ではありません、それは0x41ASCII '')と0x7aASCII 'Z')の間ではない場合event.preventDefaultを呼び出してイベントをキャンセルします。また、最後のASCIIチェックを下位'z'0x7a)から上位(0x5a)に変更すると、小文字を入力してユーザーを防ぐこともできます。また、CSS text-transform: uppercase;を使用すると、下位と上位のコンバージョンの間の遷移がユーザーに表示されません。

jQuery('#test').on('keydown', function(e) { 
 
    var charCode = e.key.charCodeAt(0); 
 
    if (!((charCode >= 0x30 && charCode <= 0x39) || (charCode >= 0x41 && charCode <= 0x7a))) { 
 
     e.preventDefault(); 
 
    } 
 
}); 
 

 
jQuery('#test').on('keyup', function(e) { 
 
    jQuery(this).val(jQuery(this).val().toUpperCase()); 
 
});
input#test { 
 
    text-transform: uppercase; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="test">

あなたが上位'Z'0x5a)と第二の条件を使用している場合は、任意の低charcters入力を持っていないので、その後、上位のイベント呼び出しへkeyupの変換は、無意味です。

関連する問題