多选取消选中并禁用

时间:2017-06-21 14:00:05

标签: javascript jquery ajax html5

我的代码上有2个多选字段

我想让所有人都选中,然后其他选项将被取消选择并禁用,同样如果选择了其他任何字段,那么所有选项都将取消选择和禁用

我的代码

<select multiple name="country[]" id="device" class="form-control" >
  <option value=\'ALL\' selected="selected">ALL</option>
  <option value=\'BD\'>Bangladesh</option>
  <option value=\'IN\'>India</option>
  <option value=\'ID\'>Indonesia</option>
  <option value=\'NG\'>Naigeria</option>
  <option value=\'PK\'>Pakistan</option>
</select>

decimal maxPrice = list.Max(i => i.price);

3 个答案:

答案 0 :(得分:0)

编辑:

如何添加额外的按钮来重置菜单? 请check this fiddle

OLD:

如果您没有按住Ctrl键,则会自动取消选择其他选项

&#13;
&#13;
$(document).ready(function() {
  $('#device, #country').on('change', function() {
    var selectedVal = $(this).val();
    for (var i = 0; i < selectedVal.length; i++) {
      if (selectedVal[i] === 'ALL') {
        // $("#device > option").attr('disabled','disabled');
        $(this).find('option').attr('disabled', 'disabled');
        $(this).find('option[value=ALL]').removeAttr('disabled');
      } else {
        $(this).find('option[value=ALL]').attr('disabled', 'disabled');
      }
    }
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select multiple name="device[]" id="device" class="form-control">
  <option value='ALL'>ALL</option>
  <option value='Android'>Android</option>
  <option value='iPod'>iPod</option>
  <option value='iPad'>iPad</option>
  <option value='Java'>Java</option>
  <option value='Windows'>Windows</option>
  <option value='Linux'>Linux</option>
  <option value='Mac'>Mac</option>
</select>

<select multiple name="country[]" id="country" class="form-control">
  <option value='ALL'>ALL</option>
  <option value='BD'>Bangladesh</option>
  <option value='IN'>India</option>
  <option value='ID'>Indonesia</option>
  <option value='NG'>Naigeria</option>
  <option value='PK'>Pakistan</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

&#13;
&#13;
 $('#device option').click(function(){
 var Allselected = $('#device :selected').text();
  var AllselectedCountry = $('#country :selected').text();
 if(Allselected =="ALL"){ 
$('#device option:not(:selected)').addClass('ashClass');
 }
 else if (Allselected !="ALL"){
$('#device option:first-child').css('color', '#ccc');
$('#device option:not(:selected)').removeClass('ashClass');
 } 
 });
  $('#country option').click(function(){
   var AllselectedCountry = $('#country :selected').text();
   if(AllselectedCountry =="ALL"){ 
$('#country option:not(:selected)').addClass('ashClass');
 }
 else if (AllselectedCountry !="ALL"){
$('#country option:first-child').css('color', '#ccc');
$('#country option:not(:selected)').removeClass('ashClass');
 
 }
 });
&#13;
.ashClass {
  color: #ccc;
}
.blackClass {
  color: black;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>


  <select multiple name="device[]" id="device" class="form-control" >
                                    <option value=\'ALL\' >ALL</option><option value=\'Android\'>Android</option><option value=\'iPod\'>iPod</option><option value=\'iPad\'>iPad</option><option value=\'Java\'>Java</option><option value=\'Windows\'>Windows</option><option value=\'Linux\'>Linux</option><option value=\'Mac\'>Mac</option>                             </select>
									   <select multiple name="country[]" id="country" class="form-control" >
                                    <option value=\'ALL\' >ALL</option><option value=\'BD\'>Bangladesh</option><option value=\'IN\'>India</option><option value=\'ID\'>Indonesia</option><option value=\'NG\'>Naigeria</option><option

 value=\'PK\'>Pakistan</option></select>
&#13;
&#13;
&#13; 更新了代码,希望这个解决您的问题。 这是你要问的吗?

答案 2 :(得分:0)

通过禁用你说我不会使用这个元素的元素,我拒绝使用这个元素,因此禁用的元素无法获取鼠标事件,因此禁用是错误的方法。

而是将其视觉禁用。

这是纯JS代码,因为我不喜欢jquery;)

<style>

select {
	height:300px;
	width:150px;
}

</style>

<body>
<select multiple name="device[]" id="device" class="form-control" onChange="Go()" >
<option value=\'ALL\' selected="selected">ALL</option>
<option value=\'Android\'>Android</option>
<option value=\'iPod\'>iPod</option>
<option value=\'iPad\'>iPad</option>
<option value=\'Java\'>Java</option>
<option value=\'Windows\'>Windows</option>
<option value=\'Linux\'>Linux</option>
<option value=\'Mac\'>Mac</option>
</select>

<select multiple name="country[]" id="device" class="form-control" onChange="Go()" >
<option value=\'ALL\' selected="selected">ALL</option>
<option value=\'BD\'>Bangladesh</option>
<option value=\'IN\'>India</option>
<option value=\'ID\'>Indonesia</option>
<option value=\'NG\'>Naigeria</option>
<option value=\'PK\'>Pakistan</option>
</select>

<script>
function Go(){
	parentElements = document.getElementsByTagName("select");
	
	for(var i = 0; i < parentElements.length; i++){
		parentElement = parentElements[i]
		children = parentElement.childNodes;
		
		for(var j = 0; j < children.length; j++){
			childNode = children[j];
			
			if(childNode.nodeName == "OPTION" || childNode.nodeName == "option"){
			
				if(childNode.value == "\\'ALL\\'" && childNode.selected == true){
					
					for(var k = 0; k < children.length; k++){										
						if(typeof(children[k].value) !== "undefined" && k != j){
							children[k].style.color = "#ccc";
							children[k].style.textDecorationLine = "line-through";
							children[k].selected = false;
						}
						
						if(typeof(children[k].value) !== "undefined" && k == j){
							children[k].style.color = "";
							children[k].style.textDecorationLine = "";
						}
					}
				}
				
				if(childNode.value != "\\'ALL\\'" && childNode.selected == true){
				
					for(var k = 0; k < children.length; k++){										
						if(typeof(children[k].value) !== "undefined" && children[k].value == "\\'ALL\\'"){
							children[k].style.color = "#ccc";
							children[k].style.textDecorationLine = "line-through";
							children[k].selected = false;
						}
						
						if(typeof(children[k].value) !== "undefined" && children[k].value != "\\'ALL\\'"){
							children[k].style.color = "";
							children[k].style.textDecorationLine = "";
						}
					}
				}
			}
		}
	}
}
</script>
</body>