Vanilla JavaScript - 如何检查一个选项在多个 select 选项中被 select 编辑?

Vanilla JavaScript - How to check a option is selected in multiple select options?

要检查 复选框 是否被勾选,我们这样做:

let isChecked = event.target.checked

像下面这样的多个select选项怎么样?

<select name="books[]" multiple>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>

当你 select B 时,我们如何检查 A 是否 selected 或 A 何时未selected?

由于多选元素处理值的方式,只需检查新值即可。如果是A,那么第一个选中的元素就是A.

document.getElementById("books").addEventListener("change", function(e) {
  console.log(this.value == "A");
});
<select name="books[]" id="books" multiple>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>

您可以查看所选选项的长度:

document.querySelector('select').addEventListener('change', function(){
  console.clear();
  let sel = this;
  let checked = [...sel.options].filter(option => option.selected).map(o => o.value);
  let isA = checked.includes('A') ? 'A selected' : 'A not selected';
  let isChecked = checked.length > 0 ? 'Selected' : 'None selected';
  console.log(isA);
  console.log(isChecked);
});
<select name="books[]" multiple>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>