2016-05-24 18 views
0

Ich habe ein mehr auswählen:jquery - Variable als Parameter der Funktion

<select name="courier" class="selectpicker courierpicker" multiple> 
    <option value="value1">Value1</option> 
    <option value="value2">Value2</option> 
    ... 
</select> 

ich zum Filtern von Zeilen in meiner Tabelle ausgewählte Optionen als Parameter verwenden möge. Dieser Code ist für mich nicht (übernehmen, nur für dieses Beispiel, dass es immer mehr als eine ausgewählte Option):

$(".selectpicker").change(function() { 
    var items = []; 
    $('.courierpicker option:selected').each(function(){ 
     items.push($(this).val()); 
    }); 
    var $result = '["' + items.join('","') + '"]'; 
    $('#data-table').bootstrapTable('filterBy', { 
     courierfilter: $result 
    }); 
}); 

Als ich auslösen:

$('#data-table').bootstrapTable('filterBy', { 
    courierfilter: ["value1","value2"] 
}); 

Alles funktioniert gut.

Ich weiß, es wird ein dummer Fehler des Anfängers sein, aber danke im Voraus für jede Hilfe.

Antwort

1

Das Problem liegt daran, die courierfilter -Eigenschaft erwartet ein Array, aber Sie bieten es eine Zeichenfolge, die wie ein Array formatiert ist. Beachten Sie auch, dass die Array-Generierung durch die Verwendung der map()-Methode vereinfacht werden kann. Versuchen Sie folgendes:

$(".selectpicker").change(function() { 
    var items = $('.courierpicker option:selected').map(function(){ 
     return this.value; 
    }).get(); 
    $('#data-table').bootstrapTable('filterBy', {  
     courierfilter: items 
    }); 
}); 
+0

Vielen Dank für einen Kick und Arbeitscode :) –

1

Nur {courierfilter: items} verwenden.