【问题标题】:Returning HTML Ends Loop Premature返回 HTML 结束循环过早
【发布时间】:2011-12-05 13:05:56
【问题描述】:

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

【问题讨论】:

  • 我猜是因为您在扫描的位置更改了 DOM。只是好奇,但为什么不使用 jQuery 让您的生活更轻松?
  • Javascript 对我来说是新的,我更愿意在使用 jQuery 简化事情之前先了解具体细节。
  • 如果使用 [] 属性访问符号,可以避免滥用 eval:document[formName][fieldArray[i]].value
  • 使用 eval 似乎是在不提前结束 for 循环的情况下调用表单元素的唯一方法。我还得出结论,调用 document.getElementById('elementID') 也会导致循环只运行一次。
  • 你在 FF、Chome、IE 上进行测试吗?一些浏览器对用户隐藏 javascript 错误(IE 不这样做),如果您的代码抛出一些错误,则循环(以及之后的所有内容)将被中止。如果您使用的是 FF,请尝试 FireBug,对于 Chrome,只需按 F12。

标签: javascript forms for-loop innerhtml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    相关资源
    最近更新 更多