唯一选择选项值

Dan*_*anc 1 javascript jquery html-select

我有 3 个 select 语句,每个语句共享相同的 5 个选项。

我如何确保在其中一个选项中选择一个选项时,它不会出现在其他选项中?

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>
Run Code Online (Sandbox Code Playgroud)

tri*_*cot 6

您可以使用 HTML5hidden属性。如果您需要对非 HTML5 的支持,请改为使用该disabled属性。请注意,jQuery.hide()并非适用于所有浏览器。

$(function () {
  $('select').change(function() {
    var used = new Set;
    $('select').each(function () {
      var reset = false;
      $('option', this).each(function () {
        var hide = used.has($(this).text());
        if (hide && $(this).is(':selected')) reset = true;
        $(this).prop('hidden', hide);
      });
      if (reset) $('option:not([hidden]):first', this).prop('selected', true);  
      used.add($('option:selected', this).text());
    });
  }).trigger('change'); // run at load
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>

<select>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>
Run Code Online (Sandbox Code Playgroud)

此解决方案将在第二个下拉列表中减少一个可用选项,并在第三个下拉列表中减少两个可用选项。在第一个下拉列表中选择已使用的选项将更改其他下拉列表的选择。

选择

另一种方法是只使用一个select,并允许用户进行多项选择,并使用代码来防止选择超过 3 个项目:

$('select').change(function() {
  if ($(':selected', this).length > 3) {
    $(':selected', this).slice(3).prop('selected', false);
  };
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple size=5>
  <option>A</option>
  <option>B</option>
  <option>C</option>
  <option>D</option>
  <option>E</option>
</select>
Run Code Online (Sandbox Code Playgroud)