javascript - jQuery - 选择框上的取消选择选项不能正常工作

标签 javascript jquery html html-select

我有 2 个选择框。当我在 selectbox1 上选择一个选项时,它会自动更改 selectbox2 上的相应值,而不考虑值但顺序。

事实是,在尝试几次之前,代码工作正常。然后,即使我更改了 selectbox1 上的选项,它也不会更新 selectbox2 上的选项。

重现问题;从 A 到 E,然后重复。

代码:

$(".firstSelectBox").change(function(e) {
  var selectedOption = $("option:selected", this);
  var idx = $(this).children().index(selectedOption)
  var secChildIdx = $(".secondSelectBox").children()[idx];
  $(".secondSelectBox").find(":selected").removeAttr('selected');
  $(secChildIdx).attr("selected", "selected");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<div class="control-group">
  <div class="controls">
    <label>First Selectbox</label><br/>
    <select class="firstSelectBox validate[required]">
      <option value="1">Select A</option>
      <option value="2">Select B</option>
      <option value="3">Select C</option>
      <option value="4">Select D</option>
      <option value="5">Select E</option>

    </select>
  </div>
</div>
<br />
<div class="control-group">
  <div class="controls">
    <label>Second Selectbox</label><br />
    <select class="secondSelectBox validate[required]">
      <option value="A">Select 1</option>
      <option value="B">Select 2</option>
      <option value="C">Select 3</option>
      <option value="D">Select 4</option>
      <option value="E">Select 5</option>
    </select>
  </div>
</div>

还有 JSFiddle 版本:https://jsfiddle.net/153w074d/

最佳答案

无需所有代码,只需使用 selectedIndex :

$(".firstSelectBox").change(function(e) {
  var selectedIndex = $(this).get(0).selectedIndex;
  $(".secondSelectBox").get(0).selectedIndex = selectedIndex;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<div class="control-group">
  <div class="controls">
    <label>First Selectbox</label><br/>
    <select class="firstSelectBox validate[required]">
      <option value="1">Select A</option>
      <option value="2">Select B</option>
      <option value="3">Select C</option>
      <option value="4">Select D</option>
      <option value="5">Select E</option>

    </select>
  </div>
</div>
<br />
<div class="control-group">
  <div class="controls">
    <label>Second Selectbox</label><br />
    <select class="secondSelectBox validate[required]">
      <option value="A">Select 1</option>
      <option value="B">Select 2</option>
      <option value="C">Select 3</option>
      <option value="D">Select 4</option>
      <option value="E">Select 5</option>
    </select>
  </div>
</div>

在您的原始代码中发生的事情是,在某种程度上,selected 属性被弄乱了。试试这个:将每个选项从 A 更改为 E,然后从 A 重新开始,选择停止工作。然后检查第二个 select 以查看有多个 option 具有 selected="selected" 属性。不确定是什么原因造成的。

关于javascript - jQuery - 选择框上的取消选择选项不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51894783/

相关文章:

javascript - Node : requiring module inside function?

optimization - 针对独特元素优化 jQuery 过滤器

javascript - 区分 JavaScript 事件

javascript - 如何使用 Material Framework 制作加载屏幕?

javascript - 如何使 `do while` 循环(它的停止条件)取决于 AJAX 调用的回调?

javascript - 空 href 不适用于 javascript

html - 当 css 中的屏幕宽度不足时,如何始终包含边距?

javascript - jQuery .width() 和 .height() 奇怪的行为

html - HTML 图灵完备吗?

javascript - 正则表达式替换在 Node 中的工作方式与在控制台中的工作方式不同