フォームの検証を行っている単純なクラスプロジェクトがあります。入力を検証するには、いくつかの基本的な正規表現を使用する必要があります。このコードは外部のjsファイルにあります。
onsubmitイベントをキャプチャし、ポストバックを続行するかどうかの検証関数の値を返す関数があります。
問題は、RegEx.test()メソッドを呼び出すと、検証関数が停止して戻り、ポストバックが誤って進行することです。また、「new RegEx()」を使用して正規表現オブジェクトを作成した場合も、同じことが起こります。理由がわからなくなってしまいました。
これが私のコードです:
$(document).ready(function() {
// onsubmit event
$('form').submit(
function() {
return validation();
}
);
// form validation
function validation() {
resetErrors();
//variables
var validates = true;
var errorString = "";
//var isEmail = new RegEx('^.+@.+\..+$'); // function stops here if line is uncommented and kicks off the postback?
//alert("harro new regex?"); // does not run if above line is uncommented
var isEmail = "/^.+@.+\..+$/"; // this doesn't stop the function
alert("harro isEmail direct regex string assignment"); // runs
var isZipCode = "/^(\d{5}$)|(^\d{5}-\d{4}$)/"; // this doesn't stop the function
alert("harro isZipCode direct regex string assignment"); // runs
//firstname
if (!$('#firstName').val().trim()) {
validates = false;
$('#firstName').addClass('error');
errorString += "First Name is blank. <br />";
}
//lastname
if (!$('#lastName').val().trim()) {
validates = false;
$('#lastName').addClass('error');
errorString += "Last Name is blank. <br />";
}
//email
if (!$('#email').val().trim()) {
validates = false;
errorString += "Email is blank. <br />";
$('#email').addClass('error');
}
// if this runs the test, the function stops here
else if (!isEmail.test(email.value)) {
validates = false;
errorString += "Please enter a valid email address. <br />";
$('#email').addClass('error');
}
alert("harro rest of function after email test?")// does not run if "else if" is ran
//address
if (!$('#address').val().trim()) {
validates = false;
$('#address').addClass('error');
errorString += "Address is blank. <br />";
}
//zipcode
if (!$('#zipCode').val().trim()) {
validates = false;
$('#zipCode').addClass('error');
errorString += "Zipcode is blank. <br />";
}
// if this runs the test, the function stops here
else if (!isZipCode.test(zipCode.value)) {
validates = false;
$('#zipCode').addClass('error');
errorString += "Please enter a valide zip code. <br />";
}
alert("harro rest of function after zipcide test?")// does not run if "else if" is ran
if (validates) {
return true;
}
//output error messages
$('#pageTitle').after("<p id='errorText'>" + errorString + "</p>");
return false;
}
//reset validation errors
function resetErrors() {
$('#errorText').remove();
$('#firstName').removeClass('error');
$('#lastName').removeClass('error');
$('#email').removeClass('error');
$('#address').removeClass('error');
$('#zipCode').removeClass('error');
}
});