Usando core jQuery, ¿cómo elimina todas las opciones de un cuadro de selección, luego agrega una opción y la selecciona?
Mi cuadro de selección es el siguiente.
<Select id="mySelect" size="9"> </Select>
EDITAR: El siguiente código fue útil para encadenar. Sin embargo, (en Internet Explorer) .val('whatever')
no seleccionó la opción que se agregó. (Utilicé el mismo 'valor' en ambos .append
y .val
.)
$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');
EDITAR: al intentar que imite este código, utilizo el siguiente código cada vez que se restablece la página / formulario. Este cuadro de selección se completa con un conjunto de botones de opción. .focus()
estaba más cerca, pero la opción no parecía seleccionada como lo hace con .selected= "true"
. No hay nada malo con mi código existente: solo estoy tratando de aprender jQuery.
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
EDITAR: la respuesta seleccionada estaba cerca de lo que necesitaba. Esto funcionó para mí:
$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;
Pero ambas respuestas me llevaron a mi solución final.
fuente
.append($("<option></option>").attr("value", '123').text('ABC!')
.append($("<option></option>", {'value':'123'}).text('ABC!')
fuente
empty()
resultó más rápido, por supuesto;) jsperf.com/find-remove-vs-empty.val('whatever')
al final de la cadena como en la respuesta de Matt.¿Por qué no usar JavaScript simple?
fuente
Si su objetivo es eliminar todas las opciones de la selección, excepto la primera (por lo general, la opción "Elija un elemento") puede usar:
fuente
Tuve un error en IE7 (funciona bien en IE6) donde el uso de los métodos jQuery anteriores eliminaría la selección en el DOM pero no en la pantalla. Utilizando la barra de herramientas de desarrollador de IE, pude confirmar que la selección se había borrado y tenía los nuevos elementos, pero visualmente la selección aún mostraba los elementos antiguos, aunque no podía seleccionarlos.
La solución fue usar métodos / propiedades DOM estándar (como tenía el original del póster) para borrar en lugar de jQuery, aún usando jQuery para agregar opciones.
fuente
No estoy seguro exactamente a qué se refiere con "agregar uno y seleccionarlo", ya que de todos modos se seleccionará de manera predeterminada. Pero, si tuviera que agregar más de uno, tendría más sentido. ¿Qué tal algo como:
Respuesta a "EDITAR" : ¿Puede aclarar lo que quiere decir con "Este cuadro de selección se completa con un conjunto de botones de opción"? Un
<select>
elemento no puede (legalmente) contener<input type="radio">
elementos.fuente
fuente
fuente
Gracias a las respuestas que recibí, pude crear algo como lo siguiente, que se adapta a mis necesidades. Mi pregunta fue algo ambigua. Gracias por seguirnos. Mi problema final se resolvió incluyendo "seleccionado" en la opción que quería seleccionar.
fuente
¿Qué tal simplemente cambiar el html a nuevos datos?
Otro ejemplo:
fuente
Primero borre todas las opciones existentes, excepto la primera (- Seleccionar--)
Agregue nuevos valores de opción usando el bucle uno por uno
fuente
Encontré en la red algo como a continuación. Con miles de opciones como en mi situación, esto es mucho más rápido que
.empty()
o.find().remove()
desde jQuery.Más información aquí .
fuente
De otra manera:
Bajo este enlace, hay buenas prácticas https://api.jquery.com/select/
fuente
La primera línea de código eliminará todas las opciones de un cuadro de selección ya que no se ha mencionado ningún criterio de búsqueda de opciones.
La segunda línea de código agregará la Opción con el valor especificado ("testValue") y el Texto ("TestText").
fuente
Sobre la base de la respuesta de mauretto, esto es un poco más fácil de leer y comprender:
Para eliminar todas las opciones excepto una con un valor específico, puede usar esto:
Esto sería mejor si la opción para agregar ya estuviera allí.
fuente
Utiliza el jquery prop () para borrar la opción seleccionada
fuente
Esto reemplazará su mySelect existente con un nuevo mySelect.
fuente
Puedes hacerlo simplemente reemplazando html
fuente
fuente
fuente
Vi este código en Select2 - Borrar selecciones
Este código funciona bien con jQuery incluso sin Select2
fuente
Espero que funcione
fuente
fuente