2012-04-02 12 views
7

Ho una selectbox con il set di attributi multiple. Sto anche usando i tag <optgroup> per separare le categorie all'interno della mia casella di selezione. Sto cercando un modo, usando javascript o jQuery, per far sì che le varie opzioni all'interno di ciascun gruppo si comportino con "logica pulsante radio" piuttosto che "logica casella di controllo". Per esempio: selezionaCasella multiselect con Optgroup: selezionare uno per gruppo

<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. utente item 1.1 nella lista. item 1.1 è selezionato come previsto.
  2. L'utente seleziona item 2.1 nell'elenco. Ora sono selezionati sia item 1.1 sia item 2.1.
  3. L'utente seleziona item 1.2 nell'elenco. Ora item 1.1 è deselezionato, mentre sono selezionati sia item 2.1 sia item 1.2.

Ha senso? Grazie in anticipo!

+1

Pensato di utilizzare i pulsanti di opzione reali per questa logica di pulsanti radio? – aaaidan

risposta

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); 
});​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

Sebbene, a dire il vero, se si desidera "logica pulsante radio", si potrebbe considerare di non utilizzare una casella di selezione multipla. L'usabilità con più caselle di selezione è comunque un dolore (le persone devono fare clic tenendo premuto il tasto Ctrl per selezionare più opzioni). Prendi in considerazione l'utilizzo di pulsanti di scelta o l'utilizzo di una casella di selezione singola per ciascun gruppo. Entrambi sono più difficili da incasinare. E lavorano senza JS, che è praticamente sempre un vantaggio.

+0

Apprezzo il suggerimento, ma sto usando un bel [jQuery plugin multiselect] (http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/) che avvolge la selectbox in un bella interfaccia. Detto questo, la tua risposta ha funzionato! Grazie! – mbeasley

+0

Ubuntu, FF, non funzionante – BeRocket

+0

@UAWDT: Il codice funziona, anche in FF su Ubuntu. : P Se non funziona per te, probabilmente stai usando male, e avremo bisogno di maggiori dettagli su cosa sta succedendo. Funziona con Chrome e IE? Cosa sta facendo invece di ciò che dovrebbe essere? Raccogli le informazioni (e qualsiasi altra cosa tu possa dirci sul problema) e pubblicale in una nuova domanda. – cHao

Problemi correlati