1

我正在处理一个具有多个下拉菜单的表单,这些下拉菜单会检查用户是否选择了某些内容。大多数字段都是强制性的,因此在单击提交时,红色文本会替换黑色,显示必须填写的内容。由于某种原因它没有验证或做我想要完成的事情。其他具有 id 的字段(例如“literature”)可以正常工作,但事实并非如此。难道是因为它是数字?

Javascript:

var lit = document.getElementById("012");
var hasLeadLiterature = false;
for (j = 0;) {
    if (lit[j].selected === true) {
        hasLeadLiterature = true;
        break;
    }
}
if (!hasLeadLiterature){
    changeCSS("lbl_literature", "errored");
    ErrorText=ErrorText+"11";
}
------
if (submitcount != 0){
    alert("This form has already been submitted.  Thank you!");
    return;
}

/** Submit form check */
if (ErrorText == ""){
    submitcount++; form.submit();
} else{
    return;
}
------

HTML:

<TR>
        <TD width="30%" valign="middle" ALIGN="left"><LABEL id="lbl_literature" for="lbl_literature" class="normal">How would you prefer to receive<br /> literature?: <SPAN class="required">*</SPAN></LABEL></TD><TD width="70%" valign="top" ALIGN="LEFT">
            <TABLE>
                    <TR>
                        <td class="text_input"> <!-- 012 -->

                            <select id="012" name="012" title="Literature Preference">
                                <option value="None">--None--</option>
                                <option value="Print">Print</option>
                                <option value="Digital">Digital</option>
                            </select>


                        </td>
                    </TR>
            </TABLE>
        </TD>
    </TR>

任何帮助将非常感激!!提前致谢!

4

2 回答 2

0

看起来您的验证正在检查相反的条件。看一看:

for (j = 0;) {
    if (lit[j].selected === true) {
        hasLeadLiterature = true;
        break;
    }
}

如果你摆脱了不必要的循环结构,你正在这样做:

if (lit[0].selected === true) {
    hasLeadLiterature = true;
}

在这种情况下,是元素中的lit[0]第一个空元素。因此,您的条件是,如果选择了空选项,则表单将生效。你不应该扭转这种情况吗?像这样的东西:optionselect

if (lit[0].selected === false) {
    hasLeadLiterature = true;
}
于 2013-07-22T19:35:35.607 回答
0

我相信你的 for 循环有问题,它没有循环任何东西,你检查过它是否循环?我建议您阅读有关如何使用 for 循环的信息,正确的代码将更像是:
for (var i=0; i<lit.length; i++)
因为此循环无效hasLeadLiterature,所以永远不会更改,因为您的代码的性质会绕过所有内容。

于 2013-07-22T19:39:14.380 回答