2016-11-23 61 views
1

因此,我有一个2个多选框(一个用于地板,另一个用于房间)。房间中的值取决于楼层。如果您选择Floor:001,则Room中的所有值都将从1开始,如果选择Floor:002,则Room中的所有值都将从2开始,依此类推。但是,当我选择在房间里的所有值都将消失的值,这里是我的脚本:多个选择框中的值在选中时消失

<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()的,但如果我删除了所有房间的值将显示,将有不要过滤。我希望有一个人可以帮助我。新手在这里。谢谢。

回答

1

我想你应该添加填充房间,只选择在地板选

此代码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(); 
      }); 
+0

它的工作先生!谢谢。 :)但是,当我没有选择楼层上的任何东西时,房间的值仍然显示,它不应该是空的。这是为什么?主席先生,我希望你能帮助我。 –

1

您已在所有选择中应用通用“更改”事件,从而导致其清除。

//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(); 
      }); 
+0

它工作先生!谢谢。 :)但是,当我没有选择楼层上的任何东西时,房间的值仍然显示,它不应该是空的。这是为什么?主席先生,我希望你能帮助我。 –

+0

@ KendallH.yes您应该在onCHange方法中添加验证,并检查floor ==“”(空)的值是否清除房间下拉菜单 – cralfaro

+1

@KendallH。你在地板上有3个值,所以默认选择任何一个值。在这种情况下,另一个选项,如' - 选择 - '和选择这个清除所有房间 – ScanQR

相关问题