需要jquery将第二个下拉列表的默认选项更改为"选择"每当我在第一个下拉列表中更改选项时

时间:2018-03-24 16:09:46

标签: javascript jquery html5 jquery-mobile

这是我正在使用的jquery。我能够选择"选择"在区域,当我选择州,但当我一次又一次地选择不同的州而不接触区时,区中的值变为每个区的最后一个选项。我希望每次改变状态时默认为"选择"(禁用)。

<script>
  $(document).ready(function() {
    $('#select3').selectmenu('disable');
    $("#select2").change(function() {
      if ($(this).data('options') === undefined) {
        $(this).data('options', $('#select3 option').clone());
      }
      var id = $(this).val();
      var option = $(this).data('options').filter('[value=' + id + ']');
      $('#select3').html(option);
      $('#select3').selectmenu('refresh');
      $('#select3').selectmenu('enable');
    });
  }); 

 <body>
          <label for="select2">State:</label>
          <select name="select2" id="select2">
                <option value = "0">Select</option>
                <option value = "1">Maharashtra</option>
                <option value = "2">Gujarat</option>
                <option value = "3">Rajasthan</option>
           </select>

        <label for="select3">District:</label>
        <select name="select3" id="select3">
               <option value = "0">Select State</option>
               <option value = "1">Select</option>
               <option value = "1">Pune</option>                       
               <option value = "1">Vidarbha</option>
               <option value = "1">Thane</option>
               <option value = "2">Select</option>
               <option value = "2">Bharuch</option>
               <option value = "2">Ahmedabad</option>
               <option value = "2">Jamnagar</option>
               <option value = "3">Select</option>
               <option value = "3">Jaipur</option>
               <option value = "3">Jodhpur</option>
               <option value = "3">Bikaner</option>
           </select>
</body>

1 个答案:

答案 0 :(得分:0)

您可以单独使用CSS隐藏页面加载时的其他值,然后通过select3选项进行过滤。 (您无法使用$(this).data('options').filter,因为this指的是#select2,而不是#select3,因此状态选项保持不变)

const select2 = $("#select2");
select2.change(() => {
  const stateVal = select2.val();
  const select3Options = $('#select3').children();
  select3Options.show();
  select3Options.filter((_, elm) => elm.value && elm.value !== stateVal).hide();
  select3Options[0].selected = 'selected';
});
#select3 > option:not([value="0"]) {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <label for="select2">State:</label>
  <select name="select2" id="select2">
    <option value = "0">Select</option>
    <option value = "1">Maharashtra</option>
    <option value = "2">Gujarat</option>
    <option value = "3">Rajasthan</option>
  </select>

  <label for="select3">District:</label>
  <select name="select3" id="select3">
    <option value = "0">Select State</option>
    <option value = "1">Pune</option>
    <option value = "1">Vidarbha</option>
    <option value = "1">Thane</option>
    <option value = "2">Bharuch</option>
    <option value = "2">Ahmedabad</option>
    <option value = "2">Jamnagar</option>
    <option value = "3">Jaipur</option>
    <option value = "3">Jodhpur</option>
    <option value = "3">Bikaner</option>
  </select>
</body>