Utilizzo di JQuery per verificare se non è stato selezionato alcun pulsante di opzione in un gruppo


107

Sono seduto con un problema, devo controllare con JQuery se non è stato selezionato alcun pulsante di opzione all'interno di un gruppo di pulsanti di opzione, in modo da poter dare agli utenti un errore javascript se si sono dimenticati di controllare un'opzione.

Sto usando il seguente codice per ottenere i valori

var radio_button_val = $("input[name='html_elements']:checked").val();

Risposte:


146
if (!$("input[name='html_elements']:checked").val()) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}

17
Questo fallirà se il pulsante di opzione selezionato ha un valore = ""
ScottE

1
@ScottE - punto eccellente - rimuoverò questa risposta se Roland non la accetta.
Dominic Rodger

Penso che potresti semplicemente cambiarlo in .val() == ""e rimuovere il !e saresti tutto pronto.
Doug Neiner,

@Doug - non avrebbe ancora il problema menzionato da ScottE? Cosa .val()tornerebbe se il pulsante di opzione selezionato lo avesse fatto value=""? (Anche se suppongo che tu possa sostenere che è un caso abbastanza improbabile).
Dominic Rodger

1
Scusate, il mio commento era confuso: intendevo che l'intero test fosse simile a questo: if ($("input[name='html_elements']:checked").val() == "")che
avviserebbe

144

sto usando

$("input:radio[name='html_radio']").is(":checked")

E restituirà FALSE se tutti gli elementi nel gruppo radio sono deselezionati e TRUE se un elemento è selezionato.


3
Questa risposta ha funzionato in modo affidabile per verificare se un gruppo di pulsanti di opzione aveva un valore selezionato. La migliore risposta nel thread.
Andy Cook

1
Sia la risposta di Dominic Rodger che quella di Jacobo Hernández funzionano bene. Personalmente cerco di non usare mai il NOT (!) Iniziale all'inizio della riga. Anni dopo diventa difficile eseguire il debug quando si trascura questo e si ha la logica all'indietro ... è (": verificato") è molto chiaro ciò che si sta facendo - La migliore risposta.
Scott

32

Potresti fare qualcosa del genere:

var radio_buttons = $("input[name='html_elements']");
if( radio_buttons.filter(':checked').length == 0){
  // None checked
} else {
  // If you need to use the result you can do so without
  // another (costly) jQuery selector call:
  var val = radio_buttons.val();
}

2
Non potresti restringere le prime due righe a solo if ($("input[name='html_elements']:checked").length == 0){?
Powerlord

7
Potresti, ma poi avresti bisogno di un'altra selezione jQuery completa per ottenere il valore se hai mostrato un valore esistente.
Doug Neiner

5
if ($("input[name='html_elements']:checked").size()==0) {
   alert('Nothing is checked!');
}
else {
  alert('One of the radio buttons is checked!');
}


2
var len = $('#your_form_id input:radio:checked').length;
      if (!len) {
        alert("None checked");
      };
      alert("checked: "+ len);

2

Penso che questo sia un semplice esempio, come controllare se una radio in un gruppo di radio è stata controllata.

if($('input[name=html_elements]:checked').length){
    //a radio button was checked
}else{
    //there was no radio button checked
} 

0

Sto usando questo molto semplice

HTML

<label class="radio"><input id="job1" type="radio" name="job" value="1" checked>New Job</label>
<label class="radio"><input id="job2" type="radio" name="job" value="2">Updating Job</label>


<button type="button" class="btn btn-primary" onclick="save();">Save</button>

SCRIPT

 $('#save').on('click', function(e) {
    if (job1.checked)
        {
              alert("New Job"); 
        }
if (job2.checked)
        {
            alert("Updating Job");
        }

}

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.