我正在处理一个有多个下拉列表的表单,检查用户是否选择了某些内容。大多数字段都是强制性的,因此在单击提交时,红色文本将替换黑色,显示必须填写的字段。由于某些原因或正在尝试完成的操作,它不会进行验证。其他具有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>
任何帮助将不胜感激!! 提前谢谢!
答案 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
永远不会因代码的性质而改变所有内容。