javascript - 如果选择了 item-all,则选择所有选项

标签 javascript jquery css html

我有这样的东西:

<select multiple>
  <option value="all-item" selected>All</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

我需要什么:

  1. 初始化后仅选择“全部”(完成)。
  2. 如果客户选择了其他选项,则应取消选择“所有元素”。
  3. 如果客户选择了 e.q 2 选项,然后选择“所有元素”,则应仅选择第一个选项,而应取消选择另一个选项。

我试过这样做:

$("#all-item").on('focus', function() {
    $("#selecty option").each(function(){
       $(this).attr("selected", "selected");
    });
});
<select multiple>
  <option value="all-item" selected>All</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

但不起作用。 有人可以帮忙吗?

最佳答案

我用 vanilla JS 做的,因为你不需要 JQuery :

function handleChange(element) {
  if(element.value === 'all-item') {
    const options = [...element.options];
    for (let opt of options) {
      if (opt.value !== '' && opt.value != 'all-item') { opt.selected = true; } 
      else { opt.selected = false; }
    }
  }
}
option {
  padding: 12px;
}
<select id="select" multiple onchange="handleChange(this)">
  <option value="">Chose an option</option>
  <option value="all-item">All</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

编辑

要取消选择所有其他选项:

function handleChange(element) {
  if(element.value === 'all-item') {
    const options = [...element.options];
    for (let opt of options) {
      if (opt.value === 'all-item') { opt.selected = true; } 
      else { opt.selected = false; }
    }
  }
}
option {
  padding: 12px;
}
<select id="select" multiple onchange="handleChange(this)">
  <option value="">Chose an option</option>
  <option value="all-item">All</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

关于javascript - 如果选择了 item-all,则选择所有选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48302925/

相关文章:

javascript - 在 JavaScript 中注入(inject)今天的日期

javascript - ng-repeat 中的新元素动画

jquery - css 配置文件随机加载

javascript - 使用 jQuery 仅针对同一类中的一个元素

JavaScript 错误 :Object doesn't support this property or method in IE Browser

javascript - 对 Ajax 加载的页面使用浏览器后退按钮?

javascript - 重置输入文件时删除事件处理程序

javascript - 在 Magento 中单击一次并进行验证后禁用“提交”按钮

html - 如何使 anchor 标签适合内容?不是页面的整个宽度

javascript - 如何 react native 深度链接打开 native 相机应用程序?