Javascript Drop Down

时间:2013-07-22 19:27:11

标签: javascript html

我正在处理一个有多个下拉列表的表单,检查用户是否选择了某些内容。大多数字段都是强制性的,因此在单击提交时,红色文本将替换黑色,显示必须填写的字段。由于某些原因或正在尝试完成的操作,它不会进行验证。其他具有id如“文学”的字段工作正常,但事实并非如此。可能是因为它是数字的吗?

使用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>

任何帮助将不胜感激!! 提前谢谢!

2 个答案:

答案 0 :(得分:0)

看起来您的验证正在检查相反的情况。看看:

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

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

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

在这种情况下,lit[0]option元素中的第一个空select元素。所以你的条件是说如果选择了空选项,表单就会验证。你不应该扭转这种状况吗?像这样:

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

答案 1 :(得分:0)

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