javascript - 如何使用 JavaScript/jQuery 选择/取消选择带有复选框的选择选项?

标签 javascript jquery html

我对 JavaScript 或 jQuery 几乎一无所知。

我需要在 <select> 中选择/取消选择一个选项单击复选框或按钮时可以选择多个选项。

复选框需要选择/取消选择具有相同值的选项。 我的想法是这样的:

$(document).ready(function() {
  var input = $('#entry-select');
  var checkboxes = $('.entrycheckbox');

  checkboxes.click(function() {
    var element = $(this);
    var value = element.val();
    input.val(value);
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="entrycheckbox" value="1">
<input type="checkbox" class="entrycheckbox" value="2">
<input type="checkbox" class="entrycheckbox" value="3">
<form action="">
  <select name="entries" id="entry-select" multiple>
    <option value="1">Option1</option>
    <option value="2">Option2</option>
    <option value="3">Option3</option>
  </select>
</form>

这仅选择具有上次单击的复选框值的选项,而不选择选中的选项,并且取消选择所有其他选项。

最佳答案

您只需为 val() 提供最后选择的复选框的值。要按照您的要求进行此操作,您需要构建所有选定复选框的数组并将其提供给 val()

要实现此目的,您可以使用 filter() 获取选定的复选框,然后使用 map() 构建数组:

input.val(checkboxes.filter(':checked').map((i, el) => el.value));

$(document).ready(function() {
  var $input = $('#entry-select');
  var $checkboxes = $('.entrycheckbox');

  $checkboxes.click(function() {
    $input.val($checkboxes.filter(':checked').map((i, el) => el.value));
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" class="entrycheckbox" value="1">
<input type="checkbox" class="entrycheckbox" value="2">
<input type="checkbox" class="entrycheckbox" value="3">
<form action="">
  <select name="entries" id="entry-select" multiple>
    <option value="1">Option1</option>
    <option value="2">Option2</option>
    <option value="3">Option3</option>
  </select>
</form>

如果您不希望用户直接更改所选的选项,您可能还需要考虑将readonly 添加到select

关于javascript - 如何使用 JavaScript/jQuery 选择/取消选择带有复选框的选择选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59103729/

相关文章:

javascript - 使用CSS在ajax中聊天div

javascript - 几个选择 : disable/hide/remove selected option in one select

javascript - 转换具有相同键值的 JSON 数组

javascript - onClick 删除边框并在下一次单击时再次添加它们 CSS,Preact

javascript - 在点击事件上存储值

javascript - 一个页面中的多个选项卡,但其他选项卡的内容也显示在第一个选项卡中

jquery - 在弹出窗口内滚动时,如何修复 fancybox 弹出窗口中的图像?

javascript - 创建一个计时器,它会在每次单击按钮后自动重新启动,并且当前使用该站点的所有用户都可以看到相同的信息

javascript - Uikit.nestable 组件 - 如何从移动的项目中获取 id

html - IE6下显示异常