2013-06-15 13 views
23

Il fatto è che questo lavoro la soluzione solo in FirefoxCome deselezionare controllare pulsante

$(':radio').on("change", function(event){ 
    $(this).prop('checked', true); 
}); 

$(':radio').on("click", function(event){ 
    $(this).prop('checked', false); 
}); 

in Chrome, ma non permetterà di selezionare qualsiasi cosa http://jsfiddle.net/wuAWn/

Ofc, potrei usare variabile e scrivere qualcosa come

var val = -1; 
$(':radio').on("click", function(){ 
    if($(this).val()==val) 
    {$(this).prop('checked', false); 
    val = -1; 
    } 
    else val = $(this).val(); 
}); 

ma dovrò pochi gruppi pulsanti di opzione sulla mia pagina e HTML contenuto viene caricato tramite ajax, quindi vorrei wrtite 1 funzione per tutti, invece di definire le variabili per ogni gruppo di pulsanti di opzione e scrivere la stessa funzione per ogni gruppo di pulsanti di opzione.

Modifica: grazie per il tuo aiuto con le caselle di controllo, ma per le caselle di controllo come gruppo di pulsanti di opzione, devi scrivere javascrip adizionale che deselezionerà tutte le altre caselle con lo stesso nome onclick, ho già il pulsante radio css e il suo più semplice per me solo per aggiungere la classe come check-like-checkbox e renderlo simile alla casella di controllo, io uso la libreria uniforme per l'aspetto personalizzato, comunque ecco la mia strana soluzione http://jsfiddle.net/wuAWn/9/

+0

Ciò che manca in questa questione è quello che stai cercando di ottenere .. Disabilitare le caselle di controllo di radio? quindi puoi usare la proprietà disabled = "disabled" .. – arnorhs

+0

No non lo so per disabilitarli, voglio creare il gruppo radiobutton, che ti permette di deselezionare già selezionato. – ccd580ac6753941c6f84fe2e19f229

+0

@Soprattutto sono curioso di sapere perché è stato contrassegnato come duplicato? Questa persona sta chiedendo come deselezionare un pulsante di opzione selezionato quando viene cliccato. Questa è una bestia completamente diversa che semplicemente non firma una checkbox. Vedi questo violino: http://jsfiddle.net/x48cx/ – Pytry

risposta

12

I pulsanti di opzione sono pensati per essere richiesti ... Se vuoi che siano deselezionati, utilizzare una casella di controllo, non è necessario complicare le cose e consentire agli utenti di deselezionare un pulsante di opzione; la rimozione della JQuery permette di selezionare da uno di loro

+1

+1, È molto più facile scrivere jquery per limitare un set di checkbox ad un massimo di un certo conta (1 nel tuo scenario) – Mikhail

+0

Ofc.potrei farlo, perché ho già css per i pulsanti di opzione e per le caselle di controllo che sono in grado di agire come pulsanti radio, ho bisogno di scrivere anche javascript, anche se non è difficile, ma comunque, volevo solo sapere se è possibile fare senza variabili o no. – ccd580ac6753941c6f84fe2e19f229

+4

controlla qui funziona su tutti i browser. [http://jsfiddle.net/f4vXj/2/](http://jsfiddle.net/f4vXj/2/) – banny

3

provare questo

funzione di unico per tutte le radio hanno classe "radio-pulsante"

lavoro in cromo e FF

http://jsfiddle.net/wuAWn/5/

$('.radio-button').on("click", function(event){ 
    $('.radio-button').prop('checked', false); 
    $(this).prop('checked', true); 
}); 
+2

Non consente di deselezionare già selezionato. – ccd580ac6753941c6f84fe2e19f229

+0

Questa sarebbe una cattiva idea se si dispone di più gruppi di pulsanti di opzione sulla stessa pagina. – olleicua

5

Si potrebbe considerare l'aggiunta di un pulsante di opzione aggiuntivo a ciascun gruppo etichettato "nessuno" o simili. Questo può creare un'esperienza utente coerente senza complicare il processo di sviluppo.

+0

Grazie, ma in alcuni casi sembrerà strano, come scegliere il sesso maschile, femminile, nessuno – ccd580ac6753941c6f84fe2e19f229

+1

Non ha bisogno di dire "nessuno". Se si desidera consentire ai propri utenti, ad esempio, di non specificare un genere, è possibile che sia presente un pulsante di opzione con l'etichetta "non specificato". Il comportamento che stai cercando fa clic su un pulsante di scelta già selezionato perché non è selezionato? – olleicua

+1

Una selectbox potrebbe anche essere un'opzione. L'impostazione predefinita è "non specificato" – Hashbrown

0

provare questo

http://jsfiddle.net/wuAWn/6/

$('.radio-button').on("click", function (event) { 
     var this_input = $(this); 
     if (this_input.attr('checked1') == '11') { 

      this_input.attr('checked1', '11') 

     } 
     else { 
      this_input.attr('checked1', '22') 
         } 
     $('.radio-button').prop('checked', false); 
     if (this_input.attr('checked1') == '11') { 
      this_input.prop('checked', false); 
      this_input.attr('checked1', '22') 
     } 
     else { 
      this_input.prop('checked', true); 
      this_input.attr('checked1', '11') 
     } 

    }); 
+0

@ user2486415 prova questo ..è anche deseleziona –

+0

Grazie, è una buona soluzione, ma c'è un problema, prova a fare clic su 1,2,3 e poi ancora 1,2,3 – ccd580ac6753941c6f84fe2e19f229

+1

@ user2486415 ora ho l'aggiornamento provare ancora http : //jsfiddle.net/wuAWn/10/ –

34

Questo semplice script consente di deselezionare un pulsante di scelta già controllato. Funziona su tutti i browser abilitati per javascript.

<html> 
    <!-- html from your link: [http://jsfiddle.net/wuAWn/][1] --> 
    <body> 
     <input type='radio' class='radio-button' name='re'> 
     <input type='radio' class='radio-button' name='re'> 
     <input type='radio' class='radio-button' name='re'> 
    </body> 

    <script type="text/javascript"> 
     var allRadios = document.getElementsByName('re'); 
     var booRadio; 
     var x = 0; 
     for(x = 0; x < allRadios.length; x++){ 

      allRadios[x].onclick = function() { 
       if(booRadio == this){ 
        this.checked = false; 
        booRadio = null; 
       }else{ 
        booRadio = this; 
       } 
      }; 
     } 
    </script> 
</html> 

http://jsfiddle.net/6Mkde/

+1

Questo esempio richiede di fare clic sul pulsante di opzione due volte se il la pagina è caricata con l'input già controllato. –

Problemi correlati