返回HTML结束循环过早
Returning HTML Ends Loop Premature
我使用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循环。有办法避免这种情况吗?
我的removeWhiteSpace函数不能正常工作,因此我的第一个字段之后的所有内容都失败了。愚蠢的错误。
相关文章:
- 循环结束/推送到数组之前在页面上呈现EJS
- 如何在javascript中循环结束后执行语句
- addclass循环结束时调用函数
- Node/Express - 如何等到 For 循环结束再使用 JSON 进行响应
- Javascript-在while循环结束后仅显示数组中的最后一个值
- 循环结束后重新启动jQuery.ech()
- 当for循环结束时,Javascript执行一个操作
- 当JS循环结束时,jQuery hide()
- 等待循环结束并执行第二个函数
- 在for循环结束时调用promise
- 在重复循环结束处修改SVG animateTransform
- 如何等到jquery效果的循环结束后再执行函数
- 在每次迭代时向DOM添加一个元素,而不是在循环结束时添加全部元素
- 在循环结束前执行的循环内的AJAX调用
- 如何在循环结束后发送函数的结果
- Javascript for循环直到循环结束才执行函数,然后迭代函数n次
- 使用for循环结束时给定的值重新启动JavaScript for循环
- 变量在循环结束时不递增
- clearartimeout只在循环结束时起作用
- 在每个循环结束时执行一些操作