2012-04-02 16 views
7

Tengo un cuadro de selección con el conjunto de atributos multiple. También estoy usando las etiquetas <optgroup> para separar categorías dentro de mi cuadro de selección. Estoy buscando una forma, usando javascript o jQuery, para tener las diferentes opciones dentro de cada grupo para que se comporten con 'lógica de botón de radio' en lugar de 'lógica de casilla de verificación'. Por ejemplo: seleccionaCuadro multiselect con Optgroups: seleccione uno por grupo

<optgroup label="cat1"> 
    <option>item 1.1</option> 
    <option>item 1.2</option> 
</optgroup> 
<optgroup label="cat2"> 
    <option>item 2.1</option> 
    <option>item 2.2</option> 
</optgroup> 
  1. usuario item 1.1 en la lista. item 1.1 se selecciona según lo esperado.
  2. El usuario selecciona item 2.1 en la lista. Ahora se seleccionan tanto item 1.1 como item 2.1.
  3. El usuario selecciona item 1.2 en la lista. Ahora item 1.1 está deseleccionado, mientras que item 2.1 y item 1.2 se han seleccionado.

¿Tiene sentido? ¡Gracias por adelantado!

+1

¿Ha pensado en usar botones de radio reales para esta lógica de botón de radio? – aaaidan

Respuesta

6
$('#select-box-id optgroup option').click(function() { 
    // only affects options contained within the same optgroup 
    // and doesn't include this 
    $(this).siblings().prop('selected', false); 
});​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

Aunque, a decir verdad, si quiere "lógica del botón de radio", puede considerar no usar un cuadro de selección múltiple. La usabilidad con varios cuadros de selección es un dolor de todos modos (las personas tienen que presionar Ctrl + para seleccionar más de una opción). Considere usar botones de opción o usar un cuadro de selección única para cada grupo. Ambos son más difíciles de estropear. Y funcionan sin JS, lo cual es casi siempre una ventaja.

+0

Agradezco la sugerencia, pero estoy usando un buen plugin [jQuery multiselect] (http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/) que envuelve la casilla de selección de una manera muy buena interfaz. Dicho eso, ¡tu respuesta funcionó! ¡Gracias! – mbeasley

+0

Ubuntu, FF, no funciona – BeRocket

+0

@UAWDT: El código funciona, incluso en FF en Ubuntu. : P Si no funciona para usted, probablemente lo esté utilizando mal, y necesitaremos más detalles sobre lo que está sucediendo. ¿Está funcionando en Chrome e IE? ¿Qué está haciendo en lugar de lo que debería ser? Reúna esa información (y cualquier otra cosa que pueda decirnos sobre el problema) y publíquela en una nueva pregunta. – cHao