多个 select 框中的值在 selected 时消失

Values in multiple select box disappear when selected

所以我有一个 2 倍 select 盒子(一个用于地板,一个用于房间)。房间中的值取决于楼层。如果您选择楼层:001,房间中的所有值将从 1 开始,如果您选择楼层:002,房间中的所有值将从 2 开始,依此类推。但是当我 select 房间中的值时,所有值都会消失,这是我的脚本:

<script type="text/javascript">
$(document).ready(

        function()
        {
              var selectArr = []; 
              $("select").change(function(){
                  var arr = $(this).val()
                   selectArr.push(arr);
                   console.log(arr)
                   populateRooms();
                   clearArray();
                });


              function clearArray() {
                  return selectArr = []
                }     

        function populateRooms() {
        $.ajax({

                type: "GET",
                url: "/hms/shifts/" + selectArr,
                success: function (response) {
                 $('#_rooms_id').empty();
                    var myObject = eval('(' + response + ')');
                    for (i in myObject)
                    {
                        $('#_rooms_id').append(
                                $('<option></option>', 
                                { 
                                    value: myObject[i]["id"],
                                    text: myObject[i]["roomNumber"]
                                }
                                )
                             );
                    }

                },
               error: function (e){
                   alert("Error" + e)
               }
           });
        }

        });

  </script>

我认为这是因为 .empty() 但如果我删除房间中的所有值都会显示,将不会有过滤器。我希望有一个人可以帮助我。新手在这里。谢谢。

我猜你应该添加活动来填充房间-select 仅在楼层-select

此代码将 onChange 事件添加到代码中的所有下拉列表:

 $("select").change(function(){
              var arr = $(this).val()
               selectArr.push(arr);
               console.log(arr)
               populateRooms();
               clearArray();
            });

改为:

$("#floors-dropdownId").change(function(){
              var arr = $(this).val()
               selectArr.push(arr);
               console.log(arr)
               populateRooms();
               clearArray();
            });

您已对所有 select 应用通用 'change' 事件,这导致它被清除。

//you have issue here , $(select) means all selects in your current DOM!      

$("select").change(function(){
              var arr = $(this).val()
               selectArr.push(arr);
               console.log(arr)
               populateRooms();
               clearArray();
            });

改为 ,

// Apply change on specific instead
$("select#floorId").change(function(){
              var arr = $(this).val()
               selectArr.push(arr);
               console.log(arr)
               populateRooms();
               clearArray();
            });