微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何知道多选下拉列表中最后一个未选中的选项?

如何解决我如何知道多选下拉列表中最后一个未选中的选项?

我有一个多选列表框

<div id="multiselectList">
  <select>
    <option value="option1">Val 1</option>
    <option value="option2">Val 2</option>
    <option value="option3">Val 3</option>
    <option value="option4">Val 2</option>
    <option value="option5">Val 3</option>
  </select>

假设最初选择了所有选项。现在我从多选列表中取消选择 option2。我如何知道用户当前未选择哪个选项。我使用了下面的代码,但它给了我所有未选择的值。

var unselectedValue = $("#multiselectList").find('option:not(:selected)');

谁能帮我找到解决方案? 提前致谢

解决方法

你可以使用jquery last()

https://api.jquery.com/last/

document.querySelector('select').addEventListener('change',() => {

  var unselectedValue = $("#multiselectList").find('option:not(:selected)').last();
  console.log(unselectedValue.val())
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="multiselectList">
  <select multiple>
    <option value="option1" selected>Val 1</option>
    <option value="option2" selected>Val 2</option>
    <option value="option3">Val 3</option>
    <option value="option4">Val 4</option>
    <option value="option5" selected>Val 5</option>
  </select>

,

尝试使用

pip3 install -e git+https://github.com/user/repo.git#egg=mypackagename
$(document).ready(function() {
  $("#sel").on("click",function(event) {
    if(!event.originalEvent.srcElement.selected) {
      console.log($(event.originalEvent.srcElement).val());
    }
  });
});

,

尝试使用

// save array to compare in function check
let lastSelected = [];

// set last selected value on document ready
$(document).ready(() => {
  lastSelected = $('select option:not(:selected)')
    .map((i,el) => el.value)
    .get();
});

$('select').on('change',() => {
  const currentSelected = $('select option:not(:selected)')
    .map((i,el) => el.value)
    .get();

  // compare to get recently selected
  const selected = lastSelected.filter(
    (val) => !currentSelected.includes(val)
  );

  // compare to get recently unselected
  const unselected = currentSelected.filter(
    (val) => !lastSelected.includes(val)
  );

  recentChanges(selected,unselected);

  // update last selected
  lastSelected = currentSelected;
});

// recentChanges event
function recentChanges(selected,unselected) {
  console.log(
    (selected.length > 0 ? selected : 'nothing') + ' is selected'
  );
  console.log(
    (unselected.length > 0 ? unselected : 'nothing') + ' is unselected'
  );
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select multiple>
  <option value="option1" selected>Val 1</option>
  <option value="option2" selected>Val 2</option>
  <option value="option3">Val 3</option>
  <option value="option4">Val 4</option>
  <option value="option5" selected>Val 5</option>
</select>

,

我如何知道用户当前未选择哪个选项。

// This is the selected value on page load
let selected = $("#multiselectList option:selected").text()

// On change event
$("#multiselectList select").on("change",function(){

  // Keep the previous selection
  let prevSelection = selected

  // Get the new one
  selected = $(this).find('option:selected').text();
  
  // Results
  console.log(`${prevSelection} was deselected and ${selected} was selected.`)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="multiselectList">
  <select>
    <option value="option1">Val 1</option>
    <option value="option2">Val 2</option>
    <option value="option3" selected>Val 3</option>
    <option value="option4">Val 4</option>
    <option value="option5">Val 5</option>
  </select>
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?