javascript - 从多个选择列表中获取未选择的选项

标签 javascript jquery

我有一个多选列表。当用户取消选择所选选项时,我想知道用户未选择的选项的值。我如何捕获它?

我的示例代码如下。

<select multiple>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
</select> 

我有以下 jquery 代码允许用户选择多个选项

$('option').mousedown(function(){ 
    e.preventDefault();
    $(this).prop('selected', $(this).prop('selected') ? false :true);
});

最佳答案

鼠标事件不能跨浏览器使用

我的建议是始终在选择中存储先前值的数组。

在每次更改时,您都可以与先前的值数组进行比较,一旦找到就更新存储的数组

$('#myselect').on('change', function() {
  var $sel = $(this),
    val = $(this).val(),
    $opts = $sel.children(),
    prevUnselected = $sel.data('unselected');
  // create array of currently unselected 
  var currUnselected = $opts.not(':selected').map(function() {
    return this.value
  }).get();
  // see if previous data stored
  if (prevUnselected) {
      // create array of removed values        
      var unselected = currUnselected.reduce(function(a, curr) {
        if ($.inArray(curr, prevUnselected) == -1) {
          a.push(curr)
        }
        return a
      }, []);
      // "unselected" is an array
      if(unselected.length){
        alert('Unselected is ' + unselected.join(', '));  
      }

  }
  $sel.data('unselected', currUnselected)
}).change();

DEMO

关于javascript - 从多个选择列表中获取未选择的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35093122/

相关文章:

javascript - 如何使用 Angular 6 触发 fadeInRight 效果

javascript - 在移动浏览器上点击按钮全屏播放 youtube 视频

javascript - 在 JavaScript 中替换/突出显示字符串 - 保持区分大小写

javascript - 使用 AJAX 离开页面时的确认窗口

JavaScript 事件 - 页面加载期间还是之前?

javascript - 如何在 selectize.js 中设置默认值?

javascript - Azure 的认知服务情感 API 返回 404

javascript - React Native Elements Checkbox 应在单击后选中

java - 从 Android 应用程序触发 javascript

javascript - 预期的标识符、字符串或数字