如果没有字段选择值,则阻止表单提交

时间:2018-04-04 20:33:20

标签: javascript forms

我想确保此表单不会发布,除非在公司字段或州字段中选择了值:

<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岁,是输家,要么他们得到报酬。对我来说唯一有意义的是他们得到了报酬。

你评论是无关紧要的,与帖子没有密切关系。太糟糕了,我没有权力删除你的帖子,因为我会,因为你是首先发布它的傻瓜。

同样,您所谓的“重复”之间几乎没有任何关系。和我的帖子。

1 个答案:

答案 0 :(得分:1)

我认为这就是你所追求的。 (我用按钮取得了自由。如果你愿意,我可以改回来。)

简单解决方案:

&#13;
&#13;
" ... "
&#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;
&#13;
&#13;