Ongelma on yksinkertainen. Minun on nähtävä, onko käyttäjä valinnut radiopainikkeen radioryhmästä. Jokaisella ryhmän radiopainikkeella on sama id.
Ongelmana on se, että minulla ei ole määräysvaltaa siihen, miten lomake luodaan. Tässä on esimerkkikoodi siitä, miltä radiopainikkeen ohjauskoodi näyttää:
<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 >
Tämän lisäksi, kun valintanappi valitaan, se ei lisää "checked" -attribuuttia kontrolliin vain tekstiä checked (kai vain ominaisuus checked ilman arvoa). Alla on esitetty, miltä valittu radio-ohjain näyttää
<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 >
Voiko joku auttaa minua jQuery-koodilla, jonka avulla voin saada tarkistetun radiopainikkeen arvon?
Ensinnäkin, sinulla ei voi olla useita elementtejä, joilla on sama id. Tiedän, että sanoit, ettet voi vaikuttaa siihen, miten lomake luodaan, mutta... yritä jotenkin poistaa kaikki id:t radioista tai tehdä niistä ainutlaatuisia.
Saadaksesi valitun valintanapin arvon, valitse se nimen perusteella :checked
-suodattimella.
var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
EDIT
Sinulla ei siis ole mitään vaikutusvaltaa nimiin. Siinä tapauksessa sanoisin, että laita nämä radiopainikkeet kaikki divin sisälle, jonka nimi on vaikkapa radioDiv
, ja muuta sitten hieman valintasi:
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
}
});
Varmista, että tämä kiedotaan DOM:n ready-funktioon ($(function(){...});
tai $(document).ready(function(){...});
).
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
// do something