2016-05-18 4 views
0

アポストロフィや期間について検証しません:文字をのみ、英数字、文字やスペースなどjqueryのは、私がのKeyDownイベントをキャプチャし、異なるケース等に入力したテキストを検証するためにjqueryのを使用している

正規表現を使用: 文字をスペースで:^ [-ZA-Z] + $ 文字のみ:^ [-ZA-Z] + $ 英数字:^ [-ZA-Z0-9] + $

これは私がバインド機能を使用する方法です:

 $('.chars_and_space_only').bind('keydown', function (event) { 
     // http://stackoverflow.com/a/8833854/260665 
     var eventCode = !event.charCode ? event.which : event.charCode; 
     if((eventCode >= 37 && eventCode <= 40) || eventCode == 8 || eventCode == 9 || eventCode == 46) { // Left/Right Arrow, Backspace, Delete keys 
      return; 
     } 
     // http://stackoverflow.com/a/8833854/260665 
     var regex = new RegExp("^[a-zA-Z ]+$"); 
     var key = String.fromCharCode(eventCode); 
     if (!regex.test(key)) { 
      event.preventDefault(); 
      return false; 
     } 
    }); 

上記のすべてのユースケースはうまくいきますが、文字、スペース、アポストロフィ、ピリオドを追加する必要があります。これは、私が変更した方法です:

 $(".chars_space_dots_apostrophes_only").bind('keydown', function (event) { 
     // http://stackoverflow.com/a/8833854/260665 
     var eventCode = !event.charCode ? event.which : event.charCode; 
     if((eventCode >= 37 && eventCode <= 40) || eventCode == 8 || eventCode == 9 || eventCode == 46) { // Left/Right Arrow, Backspace, Delete keys 
      return; 
     } 
     // http://stackoverflow.com/a/8833854/260665 
     var regex = new RegExp("^[a-zA-Z '.]+$"); 
     var key = String.fromCharCode(eventCode); 
     if (!regex.test(key)) { 
      event.preventDefault(); 
      return false; 
     } 
    }); 

これは、変なことに動作していないようです。 https://jsfiddle.net/ugu8f4y3/

正規表現を使用:

こんにちは:^ [。-ZA-Z」] + $ Regex validator上記の正規表現のために、このテキストを検証しない。ここフィドルです。世界の

ただし、フィドルのテキストフィールドでピリオドやアポストロフィを入力することはできませんが、ここには何か不足していますか?

答えて

1

問題はjqueryと​​イベントです。それをkeypressと置き換えれば、あなたは行き​​たいです。また、whichにチェックインする必要があります。

​​およびkeyupは、キーの物理的な位置が気になる場合に重要です。この場合、キーが押されたことを知り、結果の入力を処理する必要があります。 jqueryは文字コードを正規化します。

Further information about the differences between keypress, keydown and key up.

Updated Fiddle

関連する問題