2016-11-23 6 views
1

So habe ich eine 2 mehrere Auswahlbox (eine für den Boden und eine für den Raum). Die Werte im Raum hängen vom Boden ab. Wenn Sie Floor: 001 wählen, beginnen alle Werte im Raum auf 1 und wenn Sie Floor: 002 wählen, beginnen alle Werte im Room in 2 und so weiter. Aber wenn ich die Werte im Zimmer alle Werte wählen verschwinden, hier ist mein Skript:Werte in mehreren Auswahlfeld verschwinden, wenn ausgewählt

<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> 

Ich denke, es ist wegen der .empty() aber wenn ich entfernen, dass alle Werte im Raum zeigen, wird es sei kein Filter. Ich hoffe, dass mir jemand helfen kann. Neuling hier. Vielen Dank.

Antwort

1

Ich denke, Sie das Ereignis

die onChange Ereignis an alle Dropdown-Listen in Ihrem Code zu füllen Zimmer-select nur im Boden-select diesen Code hinzufügen sollte hinzufügen:

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

Änderung dieser:

+0

Es funktionierte Sir! Vielen Dank. :) Aber wenn ich auf dem Boden nichts auswähle, werden die Werte des Raums immer noch angezeigt, es sollte nicht leer sein. Warum das? Ich hoffe du kannst mir helfen, Sir. –

1

Sie haben das generische Ereignis 'change' auf alle angewendet, was bewirkt, dass es gelöscht wird.

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

Chang,

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

Es hat funktioniert Sir! Vielen Dank. :) Aber wenn ich auf dem Boden nichts auswähle, werden die Werte des Raums immer noch angezeigt, es sollte nicht leer sein. Warum das? Ich hoffe du kannst mir helfen, Sir. –

+0

@ KendallH.yes sollten Sie eine Validierung in der onChange-Methode hinzufügen, und überprüfen Sie, ob der Wert des Stockwerks == "" (leer), dann reinigen Sie die Räume Drop-down – cralfaro

+1

@KendallH. Sie haben 3 Werte im Boden, daher ist standardmäßig ein Wert ausgewählt. In diesem Fall eine andere Option wie '--Auswählen--' und auf die Auswahl dieser deaktivieren Sie alle Räume – ScanQR

Verwandte Themen