AJAX - jQuery - 三重动态下拉菜单

时间:2016-09-28 07:50:41

标签: javascript jquery ajax

我尝试编写一个函数来获取一个自动填充<option>值的三重下拉菜单。

我从2个JSON响应中获取此值。

填充第二个下拉列表时没有问题,但是当尝试第三个下拉列表时,每个值都会消失。

这是表格(公园 - &gt;钢琴 - &gt; interruttore)

<select name="idPark" id="idPark" class="form-control">
   <option value=""><spring:message code="switch.park" /></option>
    <c:forEach items="${parks }" var="park">
      <option value="${park.idPark }">${park.nomePark }</option>
    </c:forEach>
</select>

<select name="idPiano" id="idPiano" class="form-control">
  <option value=""><spring:message code="switch.floor" /></option>
    <c:forEach items="${piani }" var="piano">
      <option value="${piano.idPiano }">${piano.nomePiano }</option>
    </c:forEach>
</select>


<select name="idInterruttore" id="idInterruttore" class="form-control">
<option value=""><spring:message            code="switch.switch_lamp_name" /> </option>
  <c:forEach items="${interruttori }" var="interruttore">
    <option value="${interruttore.idInterruttore }">${interruttore.nomeInterruttore }</option>
  </c:forEach>
</select>

然后脚本是

<script>
  $(document).ready(
    function() {
      $('#idPark').change(
        function(event) {
          var parks = $("select#idPark").val();
          $.get('api/floor/park/${park.idPark }', {
            idPark: parks
          }, function(response) {

            var select = $('#idPiano');

            select.find('option').remove();
            $.each(response, function(i, v) {
              $('<option>').val(v.idPiano).text(v.nomePiano).appendTo(select);
              select.change(function(event) {
                var piani = $("select#idPiano").val();
                $.get('api/switch/${piano.idPiano}', {
                  idPiano: piani
                }, function(response) {
                  var select2 = $('#idInterruttore');
                  select2.find('option').remove();
                  $.each(response, function(k, z) {
                    $('option').val(
                        z.idInterruttore).text(
                        z.nomeInterruttore)
                      .appendTo(select2);
                  });
                });
              });
            });
          });
        });
      });
</script>

基本上我尝试为第二个列表的每个对象填充第三个列表...

1 个答案:

答案 0 :(得分:1)

你忘记了&lt;&gt;在附加

时最后一个选择的选项元素
  $(document).ready(
   function() {

     $('#idPark').on('change',function(event) {
       var parks = $(this).val();
       $.get('api/floor/park/${park.idPark }', {
         idPark: parks
       }, function(response) {

         var select = $('#idPiano');

         select.find('option').remove();
         $.each(response, function(i, v) {
           $('<option>').val(v.idPiano).text(v.nomePiano).appendTo(select);

         });
       });
     });


     $('#idPiano').on('change', function(event) {
       var piani = $(this).val();
       $.get('api/switch/${piano.idPiano}', {
         idPiano: piani
       }, function(response) {
         var select2 = $('#idInterruttore');
         select2.find('option').remove();
         $.each(response, function(k, z) {
           $('<option>').val(z.idInterruttore).text(z.nomeInterruttore).appendTo(select2);
         });
       });
     });
   });