检查是否选择了所有同类的Select

Check all the Select of same class are selected

本文关键字:同类 Select 是否 选择 检查      更新时间:2023-09-26

我试图检查是否选择了同一类的所有下拉列表,这意味着在每种情况下,所选的val都不应该是指定类DD_SubSelect Subject。问题是说,如果所有下拉列表都选择了值Select Subject,那么它会提醒选择该选项,但如果DD值中的任何一个发生了更改,尽管其余的值仍然包含值Select Subject,那么它也会说所有不应该发生的选择。

小提琴:http://jsfiddle.net/shaikasifpasha3/vjtpd4vx/1/#&togetherjs=fIsDmsKDm6

HTML:

<select class="DD_Sub" >
    <option value="Select Subject">  Select Subject  </option>
    <option value="Holiday">  Holiday  </option>
    <option value="Lunch">  Lunch  </option>
    <option value="ECO-20">ECO-20</option>
</select>
<br/>
<select  class="DD_Sub" >
    <option value="Select Subject">  Select Subject  </option>
    <option value="Holiday">  Holiday  </option>
    <option value="Lunch">  Lunch  </option>
    <option value="ECO-20">ECO-20</option>
</select>
<br/>
<select class="DD_Sub" >
    <option value="Select Subject">  Select Subject  </option>
    <option value="Holiday">  Holiday  </option>
    <option value="Lunch">  Lunch  </option>
    <option value="ECO-20">ECO-20</option>
</select>
<input type="submit" value="Click Me" onclick="return CheckDD();" id="BodyHolder_Add_New_period_button">

JS:

 function CheckDD() {
     // The .each() method is unnecessary here:
     $(".DD_Sub").each(function() {
         if ($(this).val() == "Select Subject") {
             alert("Select Subject");
             return false;
         } else {
             alert("All Selected");
             return false;
         }
     });
 }
function CheckDD() {
  if ($(".DD_Sub option:selected[value='Select Subject']").length > 0) {
    alert('Select Subject');   
  }
  else {
    alert('All Selected');
  }
  return false;
}

尝试这种方法:

 function CheckDD() {
     // state of validation - true by default
     var allValid = true;
     $(".DD_Sub").each(function () {
         // check if value was selected
         if ($(this).val() == "Select Subject") {
             alert("Select Subject");
             // if value is not selected set state to false
             allValid = false;
             return false;
         }
     });
     // display success only if state is true
     if (allValid === true) {
         alert("All Selected");
     }
     //return the result
     return allValid;
 }

这是更新的jsFiddle

尝试使用.get()Array.prototype.every()

function CheckDD() {
  // The .each() method is unnecessary here:
  $(".DD_Sub").get().every(function(el) {
    return $("option:selected", el).val() == "Select Subject"
  }) ? alert("All Selected") : alert("Select Subject");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select class="DD_Sub">
  <option value="Select Subject">Select Subject</option>
  <option value="Holiday">Holiday</option>
  <option value="Lunch">Lunch</option>
  <option value="ECO-20">ECO-20</option>
</select>
<br/>
<select class="DD_Sub">
  <option value="Select Subject">Select Subject</option>
  <option value="Holiday">Holiday</option>
  <option value="Lunch">Lunch</option>
  <option value="ECO-20">ECO-20</option>
</select>
<br/>
<select class="DD_Sub">
  <option value="Select Subject">Select Subject</option>
  <option value="Holiday">Holiday</option>
  <option value="Lunch">Lunch</option>
  <option value="ECO-20">ECO-20</option>
</select>
<input type="submit" value="Click Me" onclick="return CheckDD();" id="BodyHolder_Add_New_period_button">

if($('.DD_Sub option[value="Select Subject"]').is(':selected')){
    alert('Select Subject');
} else {
    alert('All Selected');
}