Chosen: Establecer el valor seleccionado con javascript

Creado en 21 jul. 2011  ·  25Comentarios  ·  Fuente: harvesthq/chosen

Establecer el valor seleccionado con javascript no funciona. Sé que elegido() agrega la clase single_examplechzn_o_0 a <li> que no tiene nada en común con el valor de la opción y que #single_example ya no existe después de elegido(). ¿Hay alguna manera de que esto funcione?

Esto funciona:
```


$("#ejemplo_único").val(2);

``````

Esto no funciona:
```
``````

$("#single_example").val(2);

Comentario más útil

Gracias @stof , eso funcionó.

Solo como referencia, cambiando un valor dinámicamente usando jQuery:

$("#single_example").val(2).trigger('chosen:updated');

Todos 25 comentarios

Pruebe mi rama (https://github.com/tompaton/chosen) puede arreglar esto para usted.

Desafortunadamente no funciona para mí.

Debe activar manualmente el evento de cambio (no hay forma de evitar esto, que yo sepa, lo cual es molesto ...):

$("#single_example").val(2).trigger("change");

¡Gracias, esto funciona perfectamente!

Hice el ejemplo que te mostré con error, pero cuando hago $("#single_example").val(2).trigger("change");
, no tengo ningún cambio en la lista (valor seleccionado).
Estoy usando la última versión del complemento.
Saludos

Deberá usar https://github.com/tompaton/chosen , no se ha fusionado con la rama de harvesthq.

Sí, funciona de maravilla después de usar la rama tompaton.

$("#single_example1").val(2);
$("#single_example2").val(3)
...
$("#single_example3").val(20);
$('.elegido').trigger('cambiar');

Hola chicos, descargué el fork de tompaton (https://github.com/tompaton/chosen) lo hice:
$("#single_example").val(2).trigger("cambio");
A esto funciona como un encanto
Gracias por el consejo :-)

Estoy tratando de escribir una función para borrar todo y esto no parece funcionar, incluso usando la rama tompaton:
$(".state_list").val("").trigger("cambio");

Tengo una opción vacía:
```

Is there a way to totally remove all selections? Also how about selecting all?

Lo siento, mi parche no abordó las casillas de selección múltiple, eso requerirá
un poco más de código...

El viernes, 12 de agosto de 2011 a las 1:50 a. m., MB34
[email protected]
escribió:

Estoy tratando de escribir una función para borrar todo y esto no parece funcionar, incluso usando la rama tompaton:
$(".state_list").val("").trigger("cambio");

Tengo una opción vacía:

¿Hay alguna manera de eliminar totalmente todas las selecciones? Además, ¿qué hay de seleccionar todo?

Responda a este correo electrónico directamente o véalo en GitHub:
https://github.com/harvesthq/chosen/issues/31#issuecomment-1782941

Entonces, ¿hay alguna manera de hacer esto sin parchear el complemento?

Ok, es posible borrar todas las opciones de una selección múltiple sin aplicar parches, si está dispuesto a encerrarse en cómo funciona el funcionamiento interno de las opciones:

// replace {select_id} below with the id of your <select> tag
$('#{select_id}_chzn .chzn-choices .search-choice a').click();

Esto simulará hacer clic en eliminar "x" en cada elemento elegido en la selección múltiple.

También es posible seleccionar todas las opciones (simulando hacer clic en todas las opciones disponibles en el menú desplegable):

$('#{select_id}_chzn .chzn-drop li').click();

Estas necesidades realmente deberían agregarse como métodos al complemento elegido.

Bueno, para aclarar todo esto:

@pfiller ha señalado que todo esto es posible en la rama harvesthq/chosen usando:

$("#single_example").val(2).trigger("liszt:updated");

Mi error es no haber leído el código o la documentación lo suficiente. Eso también funcionará correctamente para múltiples cuadros de selección.

La eliminación de todas las opciones de una selección múltiple se puede hacer con:

$('#{select_id}').val([]).trigger('liszt:updated');

Sin embargo, creo que mi comentario anterior sigue siendo la única forma de seleccionar todas las opciones.

_Tenga en cuenta_ que mi bifurcación ahora es la misma que la cosecha/elegido con respecto a esto, así que úsela e ignore las cosas .trigger('change') .

Para aquellos de ustedes que puedan estar usando el adaptador Prototype, pueden hacer lo mismo de la siguiente manera:

  $(select_box_id).select('option[selected]').each(function(el){el.selected = false});
  Event.fire($(select_box_id), 'liszt:updated')

Un poco torpe pero funciona. Si hay una mejor manera de hacer esto lemmie saber

La solución que uso es cambiar la opción seleccionada en la selección de fuente original y luego reconstruir Chosen.

select.val(value);
select.chosen('destroy');
select.chosen({});

@roelvanduijnhoven la solución dada en el comentario de @tompaton (o dada por @RyanS para la versión Prototype) es mejor ya que actualiza el elemento elegido existente en lugar de destruirlo y construir uno nuevo

Por alguna razón, la solución de @tompaton no pareció funcionar en mi caso. Sin embargo, no puse mucho esfuerzo en ello, así que tal vez hice algo mal.

@roelvanduijnhoven Si está usando la versión 1.0, el evento ahora es chosen:updated

Gracias @stof , eso funcionó.

Solo como referencia, cambiando un valor dinámicamente usando jQuery:

$("#single_example").val(2).trigger('chosen:updated');

Y como referencia, esto está documentado: http://harvesthq.github.io/chosen/#change -update-events

Lo siento @roelvanduijnhoven , mi comentario estaba destinado a otro problema, ahora lo eliminé. (gmail había agrupado los correos electrónicos y publiqué un comentario respondiendo)

¡Muchas gracias! ¡Este hilo me salvó el día!
Finalmente tengo selección múltiple con valores predeterminados :)

Hola, soy nuevo jquery y acabo de descargar elegido. Estoy un poco confundido por cómo establecer/obtener múltiples valores elegidos.

lo que estoy tratando de hacer es crear una opción dinámicamente en la carga de la página, luego necesito seleccionar los valores predeterminados

Gracias
guri

gpdhillion:
utilizar esta
$('.elegido-seleccionar').val([1,2,3]).trigger('elegido:actualizado');

$ ("#id").val(id_valor);
$("#id").chosen('destruir');
$("#id").elegido({});

¿Fue útil esta página
0 / 5 - 0 calificaciones