Problemstillingen er enkel. Jeg trenger å se om brukeren har valgt en radioknapp fra en radiogruppe. Alle radioknappene i gruppen har samme ID.
Problemet er at jeg ikke har kontroll på hvordan skjemaet genereres. Her er eksempelkoden for hvordan en radioknappkontrollkode ser ut:
<input type="radio" name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >
I tillegg til dette når en radioknapp er valgt, legger den ikke til et " sjekket " attributt til kontrollen, bare tekst sjekket (jeg antar bare egenskapen sjekket uten verdi) . Nedenfor ser du hvordan en valgt radiokontroll ser ut
<input type="radio" checked name='s_2_1_6_0' value='Mail copy to my bill to address' id = "InvCopyRadio" onchange = 'SWESubmitForm(document.SWEForm2_0,s_4,"","1-DPWJJF")' style="height:20;width:25" tabindex=1997 >
Kan noen hjelpe meg med jQuery-kode som kan hjelpe meg med å få verdien av merket radioknapp?
For det første kan du ikke ha flere elementer med samme ID. Jeg vet du sa at du ikke kan kontrollere hvordan skjemaet opprettes, men ... prøv på en eller annen måte å fjerne alle ID-ene fra radioene, eller gjør dem unike.
For å få verdien av den valgte radioknappen, velg den etter navn med filteret :checked
.
var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
EDIT
Så du har ingen kontroll over navnene. I så fall vil jeg si at du legger alle disse radioknappene i en div, for eksempel radioDiv
, og deretter endrer velgeren din litt:
var selectedVal = "";
var selected = $("#radioDiv input[type='radio']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
$("#radioID") // select the radio by its id
.change(function(){ // bind a function to the change event
if( $(this).is(":checked") ){ // check if the radio is checked
var val = $(this).val(); // retrieve the value
}
});
Sørg for å pakke dette inn i DOM ready-funksjonen ($(function(){...});
eller $(document).ready(function(){...});
).
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
// do something