代码之家  ›  专栏  ›  技术社区  ›  Nitin

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

  •  1
  • Nitin  · 技术社区  · 7 年前

    这是我正在使用的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 回复  |  直到 7 年前
        1
  •  0
  •   CertainPerformance    7 年前

    您可以单独使用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>