【问题标题】:Disable multiple values in dropdowns based on another dropdown根据另一个下拉列表禁用下拉列表中的多个值
【发布时间】:2018-07-11 16:07:30
【问题描述】:

我想根据第一个下拉列表中的选定值禁用第二个和第三个下拉列表中的多个值。我可以为单个选定值执行此操作。但是,如何为多个选定值执行此操作。

我有 3 个下拉菜单,都是多选下拉菜单。 我的代码是,

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="//code.jquery.com/jquery-2.1.3.js"></script>
  <link rel="stylesheet" type="text/css" href="/css/result-light.css">
  <script type="text/javascript">
    $(window).load(function(){
        var $dropdown1 = $("select[name='project_manager[]']");
        var $dropdown2 = $("select[name='test_engineer[]']");
        var $dropdown3 = $("select[name='viewer[]']");

        $dropdown1.change(function() {
            $dropdown2.empty().append($dropdown1.find('option').clone());
            $dropdown3.empty().append($dropdown2.find('option').clone());
            var selectedItem = $(this).val();
            if (selectedItem) {
                $dropdown2.find('option[value="' + selectedItem + '"]').prop('disabled', true);
                $dropdown3.find('option[value="' + selectedItem + '"]').prop('disabled', true);
            }
        });

        $dropdown2.change(function() {
            $dropdown3.empty().append($dropdown2.find('option').clone());
            var selectedItem = $(this).val();
            if (selectedItem) {
                $dropdown3.find('option[value="' + selectedItem + '"]').prop('disabled', true);
            }
        });
});

</script>
</head>
<body>
  <select name="project_manager[]" multiple="multiple">
  <option></option>
  <option value="1">Test 1</option>
  <option value="2">Test 2</option>
  <option value="3">Test 3</option>
</select>

<select name="test_engineer[]" multiple="multiple" >
  <option></option>
  <option value="1">Test 1</option>
  <option value="2">Test 2</option>
  <option value="3">Test 3</option>
</select>
<select name="viewer[]" multiple="multiple">
  <option></option>
  <option value="1">Test 1</option>
  <option value="2">Test 2</option>
  <option value="3">Test 3</option>
</select>
  <script>
    // tell the embed parent frame the height of the content
    if (window.parent && window.parent.parent){
      window.parent.parent.postMessage(["resultsFrame", {
        height: document.body.getBoundingClientRect().height,
        slug: "vrLr9wyg"
      }], "*")
    }
  </script>
</body>
</html>

【问题讨论】:

标签: javascript jquery


【解决方案1】:
   if (selectedItem) {

    $(selectedItem).each(function(v,i) {

    $dropdown2.find('option[value="' + i + '"]').prop('disabled', true);

    $dropdown3.find('option[value="' + i + '"]').prop('disabled', true);

                                });

【讨论】:

  • 我更新了我的答案。 [link] (api.jquery.com/jquery.each) 的 jquery 函数参考
  • 当我将 css 添加到下拉列表时,上述功能将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多