简体   繁体   English

HTML 表单验证 - 检查是否至少选择了一个下拉列表

[英]HTML form validation - check if at least one dropdown is selected

I'm struggling with the following issue - I have an HTML form in which there are three select fields.我正在努力解决以下问题 - 我有一个 HTML 表单,其中有三个选择字段。 Before submitting values, I want to make a form validation in which at least ONE of the four dropdowns should be selected.在提交值之前,我想进行表单验证,其中至少应选择四个下拉列表中的一个。 I have the following code but it keeps requiring all the dropdowns.我有以下代码,但它一直需要所有下拉菜单。

Link to the code: jsfiddle代码链接: jsfiddle

Code - HTML代码 - HTML

<div class="container">
  <div class="row">
    <div class="col-lg-12">
      <form method="post" id="myform">
     <div class="form-group ">
      <label class="control-label " for="select">
       Select a Choice
      </label>

      <select class="select form-control" id="select1" name="select1" required>
       <option value="">---</option>
       <option value="First Choice">1</option>
       <option value="Second Choice">2</option>
       <option value="Third Choice">3</option>
      </select>

     <select class="select form-control" id="select2" name="select2" required>
       <option value="">---</option>
       <option value="First Choice">a</option>
       <option value="Second Choice">b</option>
       <option value="Third Choice">c</option>
      </select>

     <select class="select form-control" id="select3" name="select3" required>
       <option value="">---</option>
       <option value="First Choice">X</option>
       <option value="Second Choice">Y</option>
       <option value="Third Choice">Z</option>
      </select>      
     </div>
     <div class="form-group">
      <div>
       <button class="btn btn-primary " name="submit" id="sub" type="submit">
        Submit
       </button>
      </div>
     </div>
    </form>
    </div>
  </div>
</div>

Code - JS:代码 - JS:

$(document).ready(function () {
    $('#sub').click(function() {
      check = $(".select option:selected").length;

      if(!check) {
        alert("You must select an option from at least one dropdown");
        return false;
      }

    });
});

Where I make a mistake in the code?我在代码中哪里出错了?

Take a look at this看看这个

jsfiddle example jsfiddle 示例

You need to remove the "required" attribute and manage required values using JS because if you set all combobox to required you'll be forced to fill all of them.您需要删除“必需”属性并使用 JS 管理必需值,因为如果您将所有组合框设置为必需,您将被迫填写所有这些。

    <div class="container">
  <div class="row">
    <div class="col-lg-12">
      <form method="post" id="myform">
     <div class="form-group ">
      <label class="control-label " for="select">
       Select a Choice
      </label>
      
      <select class="select form-control" id="select1" name="select1">
       <option selected disabled value="">---</option>
       <option value="First Choice">1</option>
       <option value="Second Choice">2</option>
       <option value="Third Choice">3</option>
      </select>
      
     <select class="select form-control" id="select2" name="select2">
       <option selected disabled value="">---</option>
       <option value="First Choice">a</option>
       <option value="Second Choice">b</option>
       <option value="Third Choice">c</option>
      </select>
      
     <select class="select form-control" id="select3" name="select3">
       <option selected disabled value="">---</option>
       <option value="First Choice">X</option>
       <option value="Second Choice">Y</option>
       <option value="Third Choice">Z</option>
      </select>      
     </div>
     <div class="form-group">
      <div>
       <button class="btn btn-primary " name="submit" id="sub" type="submit">
        Submit
       </button>
      </div>
     </div>
    </form>
    </div>
  </div>
</div>

JS code JS代码

    $(document).ready(function () {
    $('#sub').click(function() {
      check = $('option[disabled]:selected').length;
      if(check == 3) {
        alert("You must select an option from at least one dropdown");
        return false;
      }

    });
});

Hope it helps you希望对你有帮助

First, you must delete the required on your select tags.首先,您必须删除所选标签上的必需项。 Then, use something like this in the jquery part:然后,在 jquery 部分使用类似的东西:

$(document).ready(function () {
$('#sub').click(function() {

    var anySelected = false;
    $(".select option:selected").each(function(){
        if(!$(this).val() == ""){
          anySelected = true;
      }
    });
  if(!anySelected) {
    alert("You must select an option from at least one dropdown");
    return false;
  }

});
});

Here is a working fiddle .这是一个工作小提琴

Hope it helps!希望能帮助到你!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM