返回HTML结束循环过早

时间:2011-10-11 18:18:46

标签: javascript forms for-loop innerhtml

我使用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循环。有没有办法避免这种情况?

1 个答案:

答案 0 :(得分:0)

我的removeWhiteSpace函数无法正常工作,因此在我的第一个字段失败后的所有内容。愚蠢的错误。请关闭这个问题。