Come resettare i radiobutton in jQuery in modo che nessuno sia selezionato

Ho pulsanti radio in HTML come questo:

 1 2 3 4  

Questo è in un tag form e, quando l’utente invia un modulo, voglio ripristinare tutti i pulsanti radio predefiniti. Significa che nessuno di loro ha controllato.

Ho questo codice ma dà un errore dicendo che [0] is null or not an object

 $('input[@name="correctAnswer"]')[0].checked = false; $('input[@name="correctAnswer"]')[1].checked = false; $('input[@name="correctAnswer"]')[2].checked = false; $('input[@name="correctAnswer"]')[3].checked = false; 

Lo sto facendo in IE 6.

    Nelle versioni di jQuery precedenti alla 1.6 usa:

     $('input[name="correctAnswer"]').attr('checked', false); 

    Nelle versioni di jQuery dopo la 1.6 dovresti usare:

     $('input[name="correctAnswer"]').prop('checked', false); 

    ma se usi 1.6.1+ puoi usare il primo modulo (vedi nota 2 sotto).

    Nota 1: è importante che il secondo argomento sia falso e non “falso” poiché “falso” non è un valore falsato. vale a dire

     if ("false") { alert("Truthy value. You will see an alert"); } 

    Nota 2: A partire da jQuery 1.6.0, ci sono ora due metodi simili, .attr e .prop che fanno due cose correlate ma leggermente diverse. Se in questo caso particolare, il consiglio di cui sopra funziona se si utilizza 1.6.1+. Quanto sopra non funzionerà con la versione 1.6.0, se si utilizza la versione 1.6.0, è necessario eseguire l’aggiornamento. Se vuoi i dettagli, continua a leggere.

    Dettagli: quando si lavora con elementi DOM HTML diretti, ci sono proprietà associate all’elemento DOM ( checked , type , value , ecc.) Che forniscono un’interfaccia allo stato di esecuzione della pagina HTML. Esiste anche l’interfaccia .getAttribute / .setAttribute che fornisce l’accesso ai valori degli attributi HTML come forniti nell’HTML. Prima di 1.6 jQuery ha offuscato la distinzione fornendo un metodo, .attr , per accedere a entrambi i tipi di valori. jQuery 1.6+ fornisce due metodi, .attr e .prop per distinguere tra queste situazioni.

    .prop consente di impostare una proprietà su un elemento DOM, mentre .attr consente di impostare un valore di attributo HTML. Se si sta lavorando con DOM semplice e si imposta la proprietà checked, elem.checked , su true o false si modifica il valore corrente (ciò che l’utente vede) e il valore restituito traccia lo stato della pagina. elem.getAttribute('checked') tuttavia restituisce solo lo stato iniziale (e restituisce 'checked' o undefined seconda dello stato iniziale dall’HTML). In 1.6.1+ usando .attr('checked', false) fa sia elem.removeAttribute('checked') che elem.checked = false poiché la modifica ha causato molti problemi di retrocompatibilità e non è in grado di capire se volevo impostare l’attributo HTML o la proprietà DOM. Vedi maggiori informazioni nella documentazione per .prop .

    Il modo migliore per impostare i radiobutton è lo stato di jquery:

    HTML:

      Orange  Pink  Black  Pinkish Purple 

    Codice Jquery (1.4+) per preselezionare un pulsante:

     var presetValue = "black"; $("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked"); 

    Nel codice JQuery 1.6+ è preferito il metodo .prop ():

     var presetValue = "black"; $("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true); 

    Per deselezionare i pulsanti:

     $("[name=color]").removeAttr("checked"); 

    Il tuo problema è che il selettore degli attributi non inizia con un @ .

    Prova questo:

     $('input[name="correctAnswer"]').attr('checked', false); 
     $('#radio1').removeAttr('checked'); $('#radio2').removeAttr('checked'); $('#radio3').removeAttr('checked'); $('#radio4').removeAttr('checked'); Or $('input[name="correctAnswer"]').removeAttr('checked'); 

    Finalmente dopo un sacco di test, penso che il modo più comodo ed efficiente per preimpostare sia:

     var presetValue = "black"; $("input[name=correctAnswer]").filter("[value=" + presetValue + "]").prop("checked",true); $("input[name=correctAnswer]").button( "refresh" );//JQuery UI only 

    L’aggiornamento è richiesto con l’object JQueryUI.

    Recuperare il valore è facile:

     alert($('input[name=correctAnswer]:checked').val()) 

    Testato con JQuery 1.6.1, JQuery UI 1.8.

    So che questo è vecchio e che questo è un po ‘fuori tema, ma supponendo di voler deselezionare solo i pulsanti radio specifici in una raccolta:

     $("#go").click(function(){ $("input[name='correctAnswer']").each(function(){ if($(this).val() !== "1"){ $(this).prop("checked",false); } }); }); 
      1 2 3 4  

    Set di pulsanti di opzione controllato tramite jquery:

     

    codice jquery:

     $('div#somediv input:radio:nth(0)').attr("checked","checked"); 

    Se vuoi cancellare tutti i pulsanti di opzione nel DOM:

    $('input[type=radio]').prop('checked',false);

     
    $('#radio input').removeAttr('checked'); // Refresh the jQuery UI buttonset. $( "#radio" ).buttonset('refresh');

    Imposta tutti i pulsanti di opzione sul valore predefinito:

     $("input[name='correctAnswer']").checkboxradio( "refresh" ); 

    Dove hai:

    Dopo value = “1” puoi anche aggiungere unchecked =" false" />

    La linea sarà quindi:

      

    Perché non lo fai:

     $("#radio1, #radio2, #radio3, #radio4").checked = false;