jquery - dropdownlist - select multiple css
JQuery multiselect: establece un valor como seleccionado en el menĂº desplegable multiselect (16)
Estoy teniendo un menú desplegable de selección múltiple como abajo
<select id="data" name="data" class="data" multiple="multiple">
<option value="100">foo</option>
<option value="101">bar</option>
<option value="102">bat</option>
<option value="103">baz</option>
</select>
Al cargar la página, obtendré una matriz de valor como [101,102]. Debo iterar a través de la matriz y hacer que los valores seleccionados (las casillas de verificación correspondientes a las ID deben estar marcados). Por favor ayuda.
El sitio oficial ha mencionado (en la sección "¿Marcar o desmarcar manualmente una casilla de verificación?") Solo para usar click ()
p.ej
$("#ddl_singleSelect")
.multiselect("widget")
.find(":radio[value='''']").click(); // change displayed selectedText
$("#ddl_singleSelect option[value='''']")
.prop("selected", true) // change val()
.trigger("change"); // fire change event
$("#ddl_multiselect").multiselect("uncheckAll"); // init by de-selecting all
$("#ddl_multiselect")
.multiselect("widget")
.find( ":checkbox[value=''1'']"
+ ",:checkbox[value=''2'']"
+ ",:checkbox[value=''3'']"
+ ",:checkbox[value=''4'']"
).click(); // change displayed selecetdText
$("#ddl_multiselect")
.find( "option[value=''1'']"
+ ",option[value=''2'']"
+ ",option[value=''3'']"
+ ",option[value=''4'']"
).prop("selected", true); // change val()
$("#ddl_multiselect").trigger("change"); // fire change event
O por HTML
<select name="example-presets" multiple="multiple" size="5">
<option value="option1" selected="selected">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3" selected="selected">Option 3</option>
<option value="option4" selected="selected">Option 4</option>
<option value="option5" disabled="disabled">Option 5</option>
<option value="option6" disabled="disabled">Option 6</option>
<option value="option7">Option 7</option>
<option value="option8">Option 8</option>
<option value="option9">Option 9</option>
</select>
....
<script type="text/javascript">$("select").multiselect();</script>
Espero que estas funciones te ayuden.
$ (''# your-select''). multiSelect (''select'', String | Array);
$ (''# your-select''). multiSelect (''deselect'', String | Array);
$ (''# your-select''). multiSelect (''select_all'');
$ (''# your-select''). multiSelect (''deselect_all'');
$ (''# your-select''). multiselección (''actualizar'');
Referencia por este sitio Referencia
Este es mi ejemplo de código. Tengo números separados por comas para el menú desplegable de selección múltiple y quiero seleccionar opciones opciones múltiples de valores separados por comas.
var selected_tags_arr = new Array();
var selected_tags = 1,2,4;
selected_tags_arr = selected_tags.split(",");
$(''#contact_tags option'').each(function (){
var option_val = this.value;
for (var i in selected_tags_arr) {
if(selected_tags_arr[i] == option_val){
$("#contact_tags option[value=''" + this.value + "'']").attr("selected", 1);
}
}
});
Esto es lo que funcionó de mí usando una matriz como entrada. Primero desmarque todas las opciones, luego haga clic en las opciones elegidas usando jquery
var dimensions = ["Dates","Campaigns","Placements"];
$(".input-dimensions").multiselect("uncheckAll");
for( var dim in dimensions) {
$(".input-dimensions").multiselect("widget")
.find(":checkbox[value=''" + dimensions[dim] + "'']").click();
}
Gracias a todos por sus respuestas o comentarios.
Tomando todas sus respuestas como guía, resolví el problema con el siguiente código:
var valArr = [101,102];
i = 0, size = valArr.length;
for(i; i < size; i++){
$("#data").multiselect("widget").find(":checkbox[value=''"+valArr[i]+"'']").attr("checked","checked");
$("#data option[value=''" + valArr[i] + "'']").attr("selected", 1);
$("#data").multiselect("refresh");
}
Gracias una vez más por todo su apoyo.
Obtuve una mejor solución de la documentación jquery-multiselect .
var data = [101,102];
$("#data").multiSelect(''deselect_all'');
$("#data").multiSelect("select",data);
Puedes probar esto:
$( "#data" ).val([ "100", "101" ]);
Se supone que es tan simple como esto:
<select id=''multipleSelect'' multiple=''multiple''>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<script type=''text/javascript''>
$(''#multipleSelect'').val([''1'', ''2'']);
</script>
Compruebe mi Fiddle: https://jsfiddle.net/luthrayatin/jaLygLzo/
Terminé teniendo que hacer un ligero cambio con el evento de clic en el elemento de entrada al configurar también la hélice marcada después de disparar el evento de clic.
$(y.Ctrl).multiselect("widget").find(":checkbox").each(function () {
if ($.inArray(this.value, uniqueVals) != -1) {
$(this).click();
$(this).prop(''checked'', true);
}
});
de un array php en el multiselect ...
$PHP_array=array(); // create array anyway you need to in PHP
array_push($PHP_array,20); // Single ID values
array_push($PHP_array,22);
$javascript_str = json_encode($PHP_array); // JSON ENCODE
// luego en el script JS
$("#multiselectbox").val(<?php echo $javascript_str; ?>);
// Then refresh
$("#multiselectbox").multiselect("refresh");
ese código debería ayudar:
var selected=[101,103];
var obj=$(''#data'');
for (var i in selected) {
var val=selected[i];
console.log(val);
obj.find(''option:[value=''+val+'']'').attr(''selected'',1);
}
trabajar bien para mí, cambiar las identificaciones de acuerdo a sus requerimientos.
$("#FormId select#status_id_new").val('''');
$("#FormId select#status_id_new").multiselect("refresh");
//Do it simple
var data="1,2,3,4";
//Make an array
var dataarray=data.split(",");
// Set the value
$("#multiselectbox").val(dataarray);
// Then refresh
$("#multiselectbox").multiselect("refresh");
var valArr = [101,102], // array of option values
i = 0, size = valArr.length, // index and array size declared here to avoid overhead
$options = $(''#data option''); // options cached here to avoid overhead of fetching inside loop
// run the loop only for the given values
for(i; i < size; i++){
// filter the options with the specific value and select them
$options.filter(''[value="''+valArr[i]+''"]'').prop(''selected'', true);
}
var valArr = ["1","2","3"];
/* Below Code Matches current object''s (i.e. option) value with the array values */
/* Returns -1 if match not found */
$("select").multiselect("widget").find(":checkbox").each(function(){
if(jQuery.inArray(this.value, valArr) !=-1)
this.click();
});
Esto selecciona las opciones cuyo valor coincide con los valores en la matriz.
$("#dropDownId").val(["130860","130858"]);
$("#dropDownId").selectmenu(''refresh'');