Tengo un objeto con pares de opciones clave / valor que quiero ocultar / eliminar de una lista de selección. Ninguno de los siguientes selectores de opciones funciona. ¿Qué me estoy perdiendo?
$.each(results['hide'], function(name, title) {
$("#edit-field-service-sub-cat-value option[value=title]").hide();
$("#edit-field-service-sub-cat-value option[@value=title]").hide();
});
jquery
html-select
hitfactory
fuente
fuente
Respuestas:
Por lo que vale, la segunda forma (con
@
) no existe en jQuery 1.3. El primero no funciona porque aparentemente espera una interpolación de variables. Prueba esto:Tenga en cuenta que esto probablemente se romperá de varias formas horribles si
title
contiene metacaracteres de selector de jQuery.fuente
No puede hacer este navegador x. Si mal no recuerdo, es decir, tiene problemas. Lo más fácil de hacer es mantener una copia clonada de la selección antes de eliminar elementos, esto le permite eliminar fácilmente y luego agregar los elementos que faltan.
fuente
Encontré una mejor manera, y es muy simple:
Para volver a mostrar, simplemente busque esa opción (no span) y
$("option_you_want_to_show").unwrap()
.Fue probado en Chrome y Firefox.
fuente
$("select").val("0").trigger("change")
. La solución más fácil es estaAquí está mi giro, probablemente un poco más rápido debido a los métodos DOM nativos
fuente
Esto funciona en Firefox 3.0, pero no en MSIE 8 ni en Opera 9.62:
Pero en lugar de ocultar una opción, simplemente se puede desactivar:
La primera de las dos líneas anteriores es para Firefox y pasa el foco a la segunda opción (asumiendo que tiene valor = "2"). Si la omitimos, la opción está deshabilitada, pero aún muestra la opción "habilitada" antes de que la sueltemos. Por tanto, pasamos el foco a otra opción para evitarlo.
fuente
PUEDE hacerse en varios navegadores; solo se necesita un poco de programación personalizada. Vea mi violín en http://jsfiddle.net/sablefoste/YVMzt/6/ . Se probó que funciona en Chrome, Firefox, Internet Explorer y Safari.
En resumen, tengo un campo oculto
#optionstore
, que almacena la matriz secuencialmente (ya que no puede tener matrices asociativas en JavaScript). Luego, cuando cambia la categoría, analiza las opciones existentes (solo la primera vez) las escribe en#optionstore
, borra todo y devuelve solo las asociadas con la categoría.NOTA: Creé esto para permitir diferentes valores de opción del texto que se muestra al usuario, por lo que es muy flexible.
El HTML:
El JavaScript / jQuery:
fuente
resultgood
es simplemente una comprobación para ver si algunooptionlisting
se añadió. si lo fue,<option>
se devuelve la lista de s. De lo contrario, no se devuelve nada, que es lo que desearía si accidentalmente incluyera una clase que no estaba realmente allí (en este ejemplo, digamos, sub-Food6). Para devolver un espacio en blanco en un menú desplegable, cambie la línea de declaración al comienzo de la función avar optionlisting="<option value=''></option>";
.data
atributo; es más semánticamente correcto.Su mejor opción es establecer disabled = true en los elementos de opción que desea deshabilitar, luego en CSS set
De esa manera, incluso si el navegador no admite ocultar el elemento deshabilitado, aún no se puede seleccionar ... pero en los navegadores que sí lo admiten, se ocultarán.
fuente
Eche un vistazo a esta pregunta y las respuestas:
Desactivar seleccionar opciones ...
Al mirar su código, es posible que deba citar el valor del atributo
de los selectores de atributos de jQuery
EDITAR:
Me acabo de dar cuenta de que está obteniendo el título del parámetro de función, en cuyo caso la sintaxis debería ser
fuente
En referencia a la sugerencia de redsquare, terminé haciendo esto:
y luego para revertir esto:
fuente
El problema es que Internet Explorer no parece admitir los métodos de ocultar y mostrar para las opciones seleccionadas. Quería ocultar todas las opciones de mi selección de ddlReasonCode que no tenían el tipo seleccionado actualmente como valor del atributo "attType".
Mientras que el encantador Chrome estaba bastante satisfecho con:
Esto es lo que requiere IE (niños, no intenten esto en CHROME :-)):
Encontré esa idea de envoltura en http://ajax911.com/hide-options-selecbox-jquery/
fuente
Una vez probadas, las soluciones publicadas anteriormente por varios, incluido el caos, para ocultar elementos ahora funcionan en las últimas versiones de Firefox (66.0.4), Chrome (74.0.3729.169) y Edge (42.17134.1.0)
Para IE, esto no funciona, sin embargo, puede desactivar la opción
y luego forzar la selección de un valor diferente.
Tenga en cuenta que, para una opción deshabilitada, el valor del menú desplegable ahora será nulo, no el valor de la opción seleccionada si está deshabilitada.
fuente
Parece que también tienes que actualizar el atributo "seleccionado". De lo contrario, la opción seleccionada actualmente puede continuar mostrándose, aunque probablemente desaparecerá cuando vaya a seleccionar una opción (eso es lo que hizo por mí): Intente hacer esto:
fuente
Estaba intentando ocultar opciones de una lista de selección en función de la opción seleccionada de otra lista de selección. Funcionaba en Firefox3, pero no en Internet Explorer 6. Aquí tengo algunas ideas y ahora tengo una solución, así que me gustaría compartir:
El código JavaScript
El HTML
Se comprobó que funcionaba en Firefox 3 e Internet Explorer 6.
fuente
id
atributo debe ser único: id = Este atributo asigna un nombre a un elemento. Este nombre debe ser único en un documento.Para evitar la concatenación de cadenas, puede usar jQuery.grep
fuente
Probablemente no sea tan elegante ni tan reutilizable como un complemento de jquery. pero otro enfoque es simplemente guardar elementos de opción y cambiarlos según sea necesario:
haz esto para usar el objeto:
fuente
Implementé una solución usando una función que filtra un cuadro combinado (
<select>
) basado en atributos de datos personalizados. Esta solución admite:<option>
para mostrar cuándo el filtro dejaría la selección vacía.<option>
los elementos sin el atributo de filtro de datos no se modifican.Probado con jQuery 2.1.4 y Firefox, Chrome, Safari e IE 10+.
Este es el HTML de ejemplo:
El código jQuery para el filtrado:
Para usarlo, simplemente llame a la función con el valor que desea mantener.
Entonces la selección resultante será:
Los elementos originales son almacenados por la función data (), por lo que las llamadas posteriores agregarán y eliminarán los elementos correctos.
fuente
La respuesta señala que
@
no es válido para las iteraciones de jQuery más nuevas. Si bien eso es correcto, algunos IE más antiguos aún no ocultan elementos de opción. Para cualquiera que tenga que lidiar con la ocultación de elementos de opción en esas versiones afectadas, publiqué una solución aquí:http://work.arounds.org/issue/96/option-elements-do-not-hide-in-IE/
Básicamente, envuélvalo con un palmo y reemplácelo en el programa.
fuente
Cualquiera que se encuentre con esta pregunta también podría considerar el uso de Chosen , que amplía enormemente las capacidades de selects.
fuente
Luego, en su css asegúrese de tener
fuente
Sé que esta pregunta ha sido respondida. Pero mi requisito fue ligeramente diferente. En lugar de valor, quería filtrar por texto. Así que modifiqué la respuesta de @William Herry así.
De esta manera, también puede usar el valor reemplazando contiene como este
fuente
Para la opción de ocultar en el uso seleccionado :
Donde option_node es HTMLOptionElement
PD: No uso JQuery, pero supongo que funcionará:
fuente
Encontré que era mejor eliminar el DOM por completo.
Compatible con varios navegadores. También funciona en IE11
fuente
opción: eq (0) -Ocultar la opción en el índice '0' en el cuadro de selección.
fuente
Puede mostrar / ocultar con Valor o Nombre de clase . Consulte el siguiente enlace con el ejemplo de trabajo.
Mostrar / ocultar las opciones elegidas de jquery con valor o con el nombre de la clase.
fuente
$ ("# ddtypeoftraining option [value = 5]"). css ("display", "none"); $ ('# ddtypeoftraining'). selectpicker ('actualizar');
fuente