我有一個包含兩個textarea的表單,每個表單都涉及一組郵件。當一個檢查在javascript中無效時表單驗證中斷
<form name="myform" action='entryupdate.php' method="post">
<textarea name="mailgroup1" rows="2" cols="50" onchange="checkFormValue();">
</textarea>
<textarea name="mailgroup2" rows="2" cols="50" onchange="checkFormValue();">
</textarea>
<input name="update" type="submit" value="Update description"/>
</form>
我有一個函數來檢查電子郵件是否符合我們的內部規範。
function checkmail(component){
var emailpattern = /^[A-z0-9\._-][email protected][A-z0-9][A-z0-9-]*(\.[A-z0-9_-]+)*\.([A-z]{2,6})$/;
var mails = component.value.split(/[\n\r\t ]+/);
var valid = true;
for(var i=0; i<mails.length; i++){
valid = valid && emailpattern.test(mails[i]);
alert("Mail: "+mails[i]+" Valid: "+ emailpattern.test(mails[i]));
}
if(valid){
component.setAttribute('class', 'valid');
}else{
component.setAttribute('class', 'invalid');
}
return valid;
}
如果字段已經被類設爲無效,下面的樣式應用:
.invalid
{
background-color:#fffacd;
}
當值在textarea的一個改變,下面的函數被調用,檢查是否任何值的格式都不正確,如果是這樣,則提交按鈕將被禁用。
function checkFormValue(){
var validform = true;
validform = validform && checkmail(document.myform.mailgroup1) && checkmail(document.myform.mailgroup2);
document.hotfixomat.update.disabled = !validform;
}
問題是,如果第一次檢查返回false,那麼第二次檢查沒有做,如果它發生了價值格式不正確,那麼改變風格沒有這樣做。 (但提交按鈕被禁用)。爲什麼檢查中斷?