jquery - 根据其他列表中的选择禁用下拉列表中的选项

标签 jquery html select drop-down-menu

我有以下代码

$('select').on('change', function(){
    $('select option').prop("disabled", false);
    $("select").not(this).find("option[value="+ $(this).val() +     "]").prop('disabled', true);
});

然后有3个下拉列表

<select name="vote1" id="vote1">
<option value="player1">Player1</option>
<option value="player2">Player2</option>
<option value="player3">Player3</option>
<option value="player4">Player3</option>
</select>
<select name="vote2" id="vote2">
<option value="player1">Player1</option>
<option value="player2">Player2</option>
<option value="player3">Player3</option>
<option value="player4">Player3</option>
</select>
<select name="vote3" id="vote3">
<option value="player1">Player1</option>
<option value="player2">Player2</option>
<option value="player3">Player3</option>
<option value="player4">Player3</option>
</select>

使用我的代码,当您选择 1 个项目时,它会在其他两个项目的下拉列表中禁用它,但是如果我随后单击另一个列表中的另一个选项,它会启用其他选项。

我希望能够在一个下拉列表中选择该选项,并且它在所有其他下拉列表中保持禁用状态,直到它被取消选择。

这可能吗?

JS fiddle

最佳答案

这与您已经拥有的几乎相同,除了它会在每次更改时循环遍历每个选择,并禁用其他选择中选择的选项:

var $selects = $('select');

$selects.on('change', function() {

    // enable all options
    $selects.find('option').prop('disabled', false);

    // loop over each select, use its value to 
    // disable the options in the other selects
    $selects.each(function() {
       $selects.not(this)
               .find('option[value="' + this.value + '"]')
               .prop('disabled', true); 
    });

});

Here's a fiddle

关于jquery - 根据其他列表中的选择禁用下拉列表中的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281916/

相关文章:

javascript - 每 4 秒重复一次代码

php - 如何使用 jquery html 和 php 将标签插入数据库

html - 如何将 (h1 + (span)) + (h2) 变成 (span) + (h1) + (h2) ...?

javascript - 如何存储函数或函数的值并在浏览器刷新后重用它们

html - 页脚中的元素与 Firefox 和 Chrome 不同

postgresql - 在 PostgreSQL 查询中返回超过 24 小时

Jquery - 仅验证多种表单中的一种表单

将 URL 和电子邮件地址转换为可点击链接的 Javascript 函数

php - 从多行中选择

SQL 从两个表内连接中选择