javascript - 如何在 HTML 网页中禁用下拉选项

标签 javascript jquery html html-select

我有一个包含三个下拉菜单的网页。它工作正常,除了一个问题。

当我们从一个下拉列表中选择任何项目时,它会在其他两个下拉列表中被禁用,但如果我们再次从第一个下拉列表中选择另一个项目,那么它会禁用该项目,但它也会禁用之前选择的项目。

禁用新选项时应启用先前选择的选项。

代码如下:

<select id="select1" name="indication_subject[]">
  <option value="" selected="selected">a </option>
  <option value="1"> Accounting</option>
  <option value="2"> Afrikaans</option>
  <option value="3"> Applied Information and Communication Technology</option>
  <option value="4"> Arabic</option>
  <option value="5"> Art and Design</option>
  <option value="6"> Biology</option>
  <option value="7"> Business Studies</option>
</select>

<select id="select2" name="indication_subject[]">
  <option value="" selected="selected">a </option>
  <option value="1"> Accounting</option>
  <option value="2"> Afrikaans</option>
  <option value="3"> Applied Information and Communication Technology</option>
  <option value="4"> Arabic</option>
  <option value="5"> Art and Design</option>
  <option value="6"> Biology</option>
  <option value="7"> Business Studies</option>
</select>

<select id="select3" name="indication_subject[]">
  <option value="" selected="selected">a </option>
  <option value="1"> Accounting</option>
  <option value="2"> Afrikaans</option>
  <option value="3"> Applied Information and Communication Technology</option>
  <option value="4"> Arabic</option>
  <option value="5"> Art and Design</option>
  <option value="6"> Biology</option>
  <option value="7"> Business Studies</option>
</select>

这是 JavaScript 代码:

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

演示链接:http://jsfiddle.net/x4E5Q/137/

最佳答案

jsFiddle

将focus事件和change事件结合起来实现你想要的:

JavaScript

$(document).ready(function () {
    var previous;

    $("select").focus(function () {
        // Store the current value on focus and on change
        previous = this.value;
    }).change(function () {
        // Do something with the previous value after the change

        $("select").not(this).find("option[value=" + previous + "]").prop('disabled', false);
        $("select").not(this).find("option[value=" + $(this).val() + "]").prop('disabled', true);
        // Make sure the previous value is updated
        previous = this.value;
    });
});

关于javascript - 如何在 HTML 网页中禁用下拉选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057876/

相关文章:

html - 表悬停突出显示在 Bootstrap 4 中不起作用

javascript - 在提交表单时打开一个模式对话框,其中包含该表单的所有值

javascript - Kendo 网格中的值总和

javascript - CKEditor:图标化代码而不使用 div

javascript - 如何执行与 ES5 和 ES6 兼容的导出?

javascript - 从导入的 JSON 文件创建列表

javascript - 如何通过映射普通id构造html列表

html - 如何创建具有不同标题的多个 html 有序列表(已编辑)

javascript - 在特定时间自动刷新页面

javascript - 在 CSS HTML JavaScript 中单击时更改图片的六边形