javascript - 如何使用 jQuery 从多选选项中取消选择值?

标签 javascript jquery html dom html-select

我有一个多选选项。如果我同时选择 Mahesh 和 Dilip,我想显示一条弹出消息,提示您不能同时选择两者。如果我在弹出窗口中单击确定,那么我只想仅取消选择这两个。这个怎么做?这是我的代码:

<select multiple="" name="playerNames" id="playerNames" class=""> 
   <option value="">-- Select --</option> 
   <option value="4">Rakesh</option> 
   <option value="5">Suresh</option> 
   <option value="2">Mahesh</option> 
   <option value="6">Dilip</option> 
   <option value="1">Ramesh</option> 
   <option value="3">Dinesh</option> 
</select>

<script type="text/javascript">
   $('#playerNames').on('change',function(){  
   var selected = $('#playerNames:selected').map(function(){return $(this).val();}).get();
   alert(selected.length);   
   if(jQuery.inArray("Mahesh", selected) !== -1){
     var maheshSelected = true;
   }

   if(jQuery.inArray("Dilip", selected) !== -1){
      var dilipSelected = true;
   }

   if(maheshSelected == true && dilipSelected == true){
      var alertMessage = "You cannot choose Mahesh + Dilip. Please select either Mahesh or Dilip.";
    alert(alertMessage);
    if (confirm(alertMessage)) {

    //code to deselect  both

    }
  }

});

最佳答案

您可以使用 $('option:contains(Mahesh), option:contains(Dilip)') 选择选项,并使用 .prop('selected', false) 取消选择它们:

$('#playerNames').on('change', function(){  
  const selected = $('#playerNames :selected').map(function() {return $(this).text()}).get()
  if (selected.includes('Mahesh') && selected.includes('Dilip')) {
    alert('You cannot choose Mahesh + Dilip. Please select either Mahesh or Dilip.')
    $('option:contains(Mahesh), option:contains(Dilip)').prop('selected', false)
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple="" name="playerNames" id="playerNames" class=""> 
  <option value="">-- Select --</option> 
  <option value="4">Rakesh</option> 
  <option value="5">Suresh</option> 
  <option value="2">Mahesh</option> 
  <option value="6">Dilip</option> 
  <option value="1">Ramesh</option> 
  <option value="3">Dinesh</option> 
</select>

这是一个跨浏览器解决方案(适用于 Internet Explorer 9+):

$('#playerNames').on('change', function(){  
  var selected = $('#playerNames :selected').map(function() {return $(this).text()}).get()
  if (selected.indexOf('Mahesh') > -1 && selected.indexOf('Dilip') > -1) {
    alert('You cannot choose Mahesh + Dilip. Please select either Mahesh or Dilip.')
    $('option:contains(Mahesh), option:contains(Dilip)').prop('selected', false)
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple="" name="playerNames" id="playerNames" class=""> 
  <option value="">-- Select --</option> 
  <option value="4">Rakesh</option> 
  <option value="5">Suresh</option> 
  <option value="2">Mahesh</option> 
  <option value="6">Dilip</option> 
  <option value="1">Ramesh</option> 
  <option value="3">Dinesh</option> 
</select>

关于javascript - 如何使用 jQuery 从多选选项中取消选择值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265974/

相关文章:

JavaScript 获取 URL 内容

javascript - Google map 折线点击不会触发 PolyMouseEvent

javascript - 网站中的随机字母 C?

javascript - 将字符串列表从 Django 传递到 Javascript

javascript - 全宽、响应式、网格布局

javascript - 为什么绝对定位的父项中的百分比宽度子项在 IE 中不起作用?

javascript - 如果输入在模糊时为空,请取消选中行复选框?

jquery - 如何使用 JQuery 发布 JSON 数据?

html - 绝对定位的 div 无法识别父 div

javascript - 从 Javascript 执行 HTML 代码