javascript - 如何根据 JQuery 中的其他选择选项动态更改选择选项?

标签 javascript jquery html

请看图片的HTML选择 Showing many HTML selects

此处的想法:如果用户在第一个 HTML 选择列表中选择“A”,则“A”不应出现在其他 HTML 选择列表中。这应该在所有列表中动态更新,即使用户开始在中间的选择列表之一中进行选择。下面的代码是部分不完美的不完整解决方案。我认为这是重复的。我想要做的是继续从 HTML Select 列表中推导出选项,直到用户到达最后一个 Select 时,只剩下一个选项。
选择的 ID 为“1”、“2”等...
我有以下 JQuery 代码:



    <script>
    $(document).ready(function () {
    $("#1").change(function () {
     var val = $(this).val();
    if (val == "A") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "B") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "C") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A'>A</option><option value='B'>B</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "D") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "E") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "F") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "G") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='H'>H</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "H") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='I'>I</option><option value='J'>J</option>");
    } else if (val == "I") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='J'>J</option>");
    } else if (val == "J") {
    $("#2,#3,#4,#5,#6,#7,#8,#9,#10").html("<option value='A' >A</option><option value='B'>B</option><option value='C'>C</option><option value='D'>D</option><option value='E'>E</option><option value='F'>F</option><option value='G'>G</option><option value='H'>H</option><option value='I'>I</option>");
    }
    // end of ("#1").change JQUERY Function
    });
    //end of .ready JQuery Function
    });   

    </script>

任何简单的想法将不胜感激。在此先感谢您的帮助。

最佳答案

这是一个使用 disabled 而不是删除选项的示例。这也适用于取消选择或更改选项。

$('select').change(function() {
  // find the other selects
  var otherSelects = $('select').not(this);
  // get the old value of this select
  var oldValue = $(this).data('old');
  //remove disabled from the other selects option for the old value
  if (oldValue)
    otherSelects.find('option[value=' + oldValue + ']').removeAttr('disabled');
  //add disabled for the other selects option for the new value
  if (this.value)
    otherSelects.find('option[value=' + this.value + ']').attr('disabled', 'disabled');
  // store the new value as old  
  $(this).data('old', this.value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select>
  <option></option>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>

<select>
  <option></option>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>

<select>
  <option></option>
  <option value="A">A</option>
  <option value="B">B</option>
  <option value="C">C</option>
</select>

关于javascript - 如何根据 JQuery 中的其他选择选项动态更改选择选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42140882/

相关文章:

html - 为什么 Disabled = ture 对于 html 有效?

javascript - 如何隐藏指针事件但仍然能够启动拖动事件?

javascript - 删除由 Google map 标记点击触发的动态创建的 <div>

javascript - 我怎样才能像这样 : https://riot. design/en/对导航栏中的元素进行动画处理?

c# - 使用 jQuery 调用 Web 服务

javascript - 我如何将 AngularJs 与 JsBarcode 一起使用?

html - 使用 Bootstrap 的移动响应 github 页面的格式化问题

javascript - 如何使用一个下拉菜单更新两个 Highcharts ?

javascript - 为什么 ReactJS ReactDom.render() 不呈现 HTML 标签?

javascript - 未捕获的类型错误 : Object #<Object> has no method 'newsticker'