Preselezione valori in mulitselect con jQuery
-
19-09-2019 - |
Domanda
Ho un insieme di valori che sono presenti nella pagina di caricamento: ad esempio [1193,1184,2372].
Ho un dropdownchecklist che può assumere un valore unico in questo modo $ ( "Ddl.") Dropdownchecklist () val (1193);..
Quando ho associare nuovamente il dropdownchecklist questo seleziona il valore corretto. Comunque ho provato passando il mio array contenente più valori al metodo val () e che non seleziona i valori. I tipi di aspettavo questo. Io non sono sicuro di come fare migliore di preselezione.
Ho provato l'iterazione mia matrice per creare un attributo filtro da applicare come la seguente: . $ ( "Ddl [valore * = '1184'] [valore * = '9067'] [valore * = '14841']") attr ( 'selezionato', 'selezionate');
, ma questo non funziona. Io non voglio avere per scorrere tutte le opzioni del ddl e impostarle per selezionare se corrispondono in quanto vi sono centinaia di opzioni e questo non sarà buona prestazione saggia, soprattutto se ci sono solo 2 opzioni da preseleted.
Tutte le idee?
Soluzione
Crea una serie di quelli selezionati per creare la stringa di selezione jQuery e metterlo nella .find () Funzione:
var str = '';
var arrLength = selectedArray.length;
$.each(selectedArray, function(i){
str += 'option[value*='+selectedArray[i]+']';
if((i+1) != arrLength){
str += ', ';
}
});
$('.ddl').find("option[value*='1184'], option[value*='9067'], option[value*='14841']")
.attr('selected','selected');
Si noti inoltre, quando si confrontano un menu a discesa con un valore, si sta guardando per l'elemento option
nella select, non l'elemento di selezione in sé.
Altri suggerimenti
ho preso a lavorare con questo, ma la risposta di cui sopra sembra che una buona soluzione:
$.each(arr, function(i,s)
{
$(ddl_id + ' [value*=\'' + s + '\']').attr('selected','selected');
});
Non sono sicuro che rischia di essere più veloce, ma le mine un po 'più pulito.