我使用javascript来验证某些表单元素。在提交表单时,我想要的字段将传递到我的validateReqFields函数中。一切都工作得很好,直到我进入for循环,这意味着在表单字段旁边添加一个空的错误消息。似乎只要一个字段失败并将消息添加到div,for循环就不会继续。
HTML表单元素:
First Name <input type="text" name="firstName" onkeypress="return checkField(event, letters);"/><div id="firstNameMsg" style="display:inline-block;"></div>
<br>
Last Name <input type="text" name="lastName" onkeypress="return checkField(event, letters);"/><div id="lastNameMsg" style="display:inline-block;"></div>
Javascript功能:
function validateReqFields(formName, reqFields){
var fieldArray = reqFields.split(",");
var failedList = new Array();
var message = "Required Field";
for(var i=0; i<fieldArray.length; i++){
removeWhiteSpace(fieldArray[i]);
var s = eval('document.'+formName+'.'+fieldArray[i]+'.value');
if(s.length<1) { failedList.push(fieldArray[i]); }
}
if(failedList.length >= 1) {
for(var i=0; i<failedList.length; i++) {
//BUG - Only shows first failed field.
document.getElementById(failedList[i] + 'Msg').innerHTML = message;
}
} else {
document.mForm.submit();
}
}
function removeWhiteSpace(mString){
mString = mString.replace(/(^\s+|\s+$)/g,' ');
return mString;
}
我做了一些测试并得出结论,当for循环在第一个div元素上设置innerHtml时,它会打破for循环。有没有办法避免这种情况?
答案 0 :(得分:0)
我的removeWhiteSpace函数无法正常工作,因此在我的第一个字段失败后的所有内容。愚蠢的错误。请关闭这个问题。