我想确保此表单不会发布,除非在公司字段或州字段中选择了值:
<form method="POST" name="udate" onsubmit="return anyvalidate();">
<input type="text" name="company">
<select name="states[]" multiple="multiple" >
<option value="California">California</option>
<option value="Colorado">Colorado</option>
</select>
<input type="submit" value="Update"/></div>
</form>
我试过这段代码:
<script language="JavaScript"> <!--
function anyvalidate() {
if ( udate.company.value == ""
) {
alert( "You need to complete at least 1 field to conduct a search" );
return false;
}
}
//--> </script>
哪个有用
但是当我添加states []字段时:
<script language="JavaScript"> <!--
function anyvalidate() {
if ( udate.company.value == ""
&& udate.states[].value == ""
) {
alert( "You need to complete at least 1 field to conduct a search" );
return false;
}
}
//--> </script>
即使没有选择任何州,表格也会通过。
如果我将州字段的名称更改为&#34;州&#34;只有,没有[],那么代码就可以了:
<script language="JavaScript"> <!--
function anyvalidate() {
if ( udate.company.value == ""
&& udate.states.value == ""
) {
alert( "You need to complete at least 1 field to conduct a search" );
return false;
}
}
//--> </script>
但是,如果用户选择了至少一种状态,我需要传递数组。
如何检查此类型的表单,其中包含多个/数组字段,以确保在提交之前至少有一个字段具有值?
修改
亲爱的昆汀,你引用的链接非常偏远,并没有明确说明问题的全部,以便合理的搜索会发现它,并且2)它会接近于解决方案如下。
任何花时间尝试寻找“重复”的人。真的不是重复,要么没有工作,15岁,是输家,要么他们得到报酬。对我来说唯一有意义的是他们得到了报酬。
你评论是无关紧要的,与帖子没有密切关系。太糟糕了,我没有权力删除你的帖子,因为我会,因为你是首先发布它的傻瓜。
同样,您所谓的“重复”之间几乎没有任何关系。和我的帖子。
答案 0 :(得分:1)
我认为这就是你所追求的。 (我用按钮取得了自由。如果你愿意,我可以改回来。)
简单解决方案:
" ... "
&#13;
let c = document.forms[0].elements['company'];
let s = document.forms[0].elements['states[]'].options
function check() {
if(!c.value && s.selectedIndex === -1){
alert('no way! must do one or the other');
}
}
&#13;