L'énoncé du problème est simple. J'ai besoin de voir si l'utilisateur a sélectionné un bouton radio dans un groupe de radio. Tous les boutons radio du groupe ont le même identifiant.
Le problème est que je n’ai pas le contrôle sur la façon dont le formulaire est généré. Voici un exemple de code de contrôle d'un bouton radio :
<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 >
En outre, lorsqu'un bouton radio est sélectionné, il n'ajoute pas d'attribut "checked" au contrôle, mais seulement le texte "checked" (je suppose que c'est la propriété "checked" sans valeur). Voici à quoi ressemble un contrôle radio sélectionné
<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 >
Quelqu'un peut-il m'aider avec un code jQuery qui peut m'aider à obtenir la valeur du bouton radio coché ?
Tout d'abord, vous ne pouvez pas avoir plusieurs éléments avec le même id. Je sais que vous avez dit que vous ne pouvez pas contrôler la façon dont le formulaire est créé, mais... essayez d'une façon ou d'une autre de supprimer tous les ids des radios, ou de les rendre uniques.
Pour obtenir la valeur du bouton radio sélectionné, sélectionnez-le par son nom avec le filtre :checked
.
var selectedVal = "";
var selected = $("input[type='radio'][name='s_2_1_6_0']:checked");
if (selected.length > 0) {
selectedVal = selected.val();
}
EDIT
Vous n'avez donc aucun contrôle sur les noms. Dans ce cas, je vous dirais de placer ces boutons radio dans un div, nommé, disons, radioDiv
, puis de modifier légèrement votre sélecteur :
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
}
});
Assurez-vous de l'inclure dans la fonction DOM ready ($(function(){...});
ou $(document).ready(function(){...});
).
if (!$("#InvCopyRadio").prop("checked") && $("#InvCopyRadio").prop("checked"))
// do something