2017-01-05 5 views
-1

ユーザー入力が6桁かOBか、8桁しか受け付けないかを検証しています。JSPページで検証中に初めて「未定義」が表示される

数字は非常にうまく動作しますが、最初にアルファベット(O以外)を入力すると、入力テキストボックスに「未定義」と表示されます。これを克服する方法は?私はすべての変数を初期化して正規表現(/ [OB0-9] * /)も変更しようとしましたが、何も動いていません。ここで

は、正規表現と私のJSPコードです:ここで

<input type="text" value="<c:out value='${bookingPathView.extraAANumber}'/>" name="businessExtrAA" id="enterPassengerDetailsForm.businessExtrAA" size="17" maxlength="10" pattern="[OB0-9]*" class="forceWidth-phone forceWidth6" /> 

は、私のJavascriptコード

var keepBusinessExtraMaxLength = function() { 
     var input = []; 
     jQuery("#enterPassengerDetailsForm\\.businessExtrAA").each(function(i) { 
      input[i]=this.defaultValue; 
      jQuery(this).data("idx",i); 
     }); 
     jQuery("#enterPassengerDetailsForm\\.businessExtrAA").on("keyup", function (e) { 
      var field = jQuery(this); 
      var val=this.value; 
       var maxLength=isNaN(jQuery(field).val()) ? Number(jQuery(field).attr("maxlength")) : 6; 
       var thisIndex=jQuery(field).data("idx"); 
      if (this.validity && this.validity.badInput || jQuery(field).is(":invalid")) { 
       this.value = input[jQuery(thisIndex)]; 
       return; 
      }  
      if (val.length > maxLength) { 
       val=val.slice(0, maxLength); 
       jQuery(field).val(val); 
      } 

      input[jQuery(thisIndex)]=val; 
     });   
    } 

答えて

0

であるあなたの正規表現は、文字だけOBや他の番号に一致しているようです。.. 。 一致するように

6 di 8桁の数字が続くGITSまたはOBは

あなたは、この正規表現を使用することができます:^(?:[0-9]{6}|OB[0-9]{8})$

デモンストレーション:提案@Mateusためhttp://www.regexpal.com/?fam=96586

+0

おかげで、これは私のために働いていません。私は一度に1つの文字/数字をチェックしているので、 "OB [0-9]"は失敗しています。私は([0-9] *)|(^ O [B0-9] *)を試しましたが、これは同じエラー "undefined" – SamG

関連する問題