简体   繁体   English

如何检查选择选项中的所有值是否与javascript相同?

[英]How to check if all value in select option are the same with javascript?

if I have html like this. 如果我有这样的HTML。

<select multiple="" class="form-control" id="catalogsearch_specification2">

<option value="B-3-7">aaa</option>
<option value="B-3-7">bbb</option>
<option value="B-3-7">ccc</option>
<option value="B-3-7">ddd</option>

</select>

How to check if all value in select option are the same with javascript ? 如何使用javascript检查select选项中的所有值是否相同?

Use Set object to check if each of the option elements has the same value property. 使用Set对象检查每个option元素是否具有相同的value属性。 If so - use Array#forEach to apply selected prop on each of them. 如果是这样,请使用Array#forEachselected道具应用于每个道具。

 let parent = document.getElementById('catalogsearch_specification2'), values = Array.from(parent.children).map(v => v.value); [...new Set(values)].length == 1 ? Array.from(parent.children).forEach(v => v.selected = true) : null; 
 <select multiple="" class="form-control" id="catalogsearch_specification2"> <option value="B-3-7">aaa</option> <option value="B-3-7">bbb</option> <option value="B-3-7">ccc</option> <option value="B-3-7">ddd</option> </select> 

This snippet will help you understand how to retrieve values from child nodes. 此代码片段将帮助您了解如何从子节点检索值。

 var obj = {}; var i = 0 $("#catalogsearch_specification2 option").each(function() { //You can write you logic here. if(!obj.hasOwnProperty(this.value)) { obj[this.value] = {"value" : this.value, "duplicate" : 1}; } else { obj[this.value].duplicate = (obj[this.value].duplicate) + 1; } }); console.log(JSON.stringify(obj)); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select multiple="" class="form-control" id="catalogsearch_specification2"> <option value="B-3-7">aaa</option> <option value="B-3-7">bbb</option> <option value="B-3-7">ccc</option> <option value="B-3-7">ddd</option> </select> 

Here I'm taking all the child option element of id "catalogsearch_specification2". 在这里,我将获取ID为“ catalogsearch_specification2”的所有子选项元素。

You can do: 你可以做:

 var isSame = true, prev = ''; $('#catalogsearch_specification2 > option').each(function() { if (prev && prev !== this.value) { isSame = false; return; } prev = this.value; }); console.log(isSame); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select multiple="" class="form-control" id="catalogsearch_specification2"> <option value="B-3-7">aaa</option> <option value="B-3-7">bbb</option> <option value="B-3-7">ccc</option> <option value="B-3-7">ddd</option> </select> 

There are a numerous way you can check. 您可以通过多种方式进行检查。 Here is a solution. 这是一个解决方案。 Take the first option value and count total no of option with that value. 就拿第一个选项值和计数与价值选择权的总没有。 And again count the total option value. 并再次计算总期权价值。 If the count are same then all option values are same otherwise not. 如果计数是相同的,那么所有的选项值相同,否则不行。

 $(function(){ var firstValue = $('#catalogsearch_specification2').find("option:first-child").val(); if($('#catalogsearch_specification2 option[value="'+firstValue+'"]').length == $('#catalogsearch_specification2 option').length){ console.log("All values are same"); }else{ console.log("All values are not same"); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <select multiple="" class="form-control" id="catalogsearch_specification2"> <option value="B-3-7">aaa</option> <option value="B-3-7">bbb</option> <option value="B-3-7">ccc</option> <option value="B-3-1">ddd</option> </select> 

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

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