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