web-dev-qa-db-fra.com

Vérifier si le bouton radio spécifique est coché

Je rencontre des difficultés après avoir consulté les documents jQuery. J'essaie simplement de retourner vrai/faux dans l'une de mes méthodes jQuery en fonction de la vérification d'un certain radiobutton et de la sélection ou non

J'ai essayé plusieurs choses mais je n'ai pas réussi à comprendre ça:

<input type="radio" runat="server" name="testGroup" id="test1" /><label for="<%=test1.ClientID %>" style="cursor:hand" runat="server">Test1</label>
<input type="radio" runat="server" name="testGroup" id="test2" /><label for="<%=test2.ClientID %>" style="cursor:hand" runat="server">Test2</label>
<input type="radio" runat="server" name="testGroup" id="test3" /> <label for="<%=test3.ClientID %>" style="cursor:hand">Test3</label>

et dans ma méthode j'ai ceci:

return $("input[@name='test2']:checked");

Je reçois un undefined on $("input[@name='test2']:checked");

MIS À JOUR:

exemple:

<input type="radio" runat="server" name="radioGroup"  id="payPalRadioButton" value="paypalSelected" /> 

cela retourne toujours 'undefined': 

$("input[@name=radioGroup]:checked").attr('payPalRadioButton'); 

Si j'essaye ceci, je deviens faux même si je sélectionne le bouton radio:

$('input:radio[name=radioGroup]:checked').val() == 'paypalSelected'
33
PositiveGuy

Votre sélecteur ne sélectionnera pas le champ de saisie et, le cas échéant, il retournera un objet jQuery. Essaye ça:

$('#test2').is(':checked'); 
72
PetersenDidIt

Je pense que vous utilisez la mauvaise approche. Vous devez définir l'attribut value de vos éléments d'entrée. Consultez la documentation de .val () pour des exemples de paramétrage et de renvoi du fichier .val () des éléments en entrée.

c'est à dire.

<input type="radio" runat="server" name="testGroup" value="test2" />

return $('input:radio[name=testGroup]:checked').val() == 'test2';
6
ghoppe

1.Vous n'avez plus besoin du préfixe @ pour les noms d'attributs:

http://api.jquery.com/category/selectors/attribute-selectors/ :

Remarque: Dans le style jQuery 1.3 [@attr] les sélecteurs ont été supprimés (ils étaient déjà obsolètes dans jQuery 1.2) . Supprimez simplement le symbole "@" de votre fichier sélecteurs afin de les faire fonctionner encore.

2. Votre sélecteur interroge les boutons radio par name, mais cet attribut n'est pas défini dans votre structure HTML.

4
naivists

Je viens de trouver une solution de travail appropriée pour les autres gars, 

// Returns true or false based on the radio button checked
$('#test1').prop('checked')


$('body').on('change','input[type="radio"]',function () {
alert('Test1 checked = ' + $('#test1').prop('checked') + '. Test2 checked = ' + $('#test2').prop('checked') + '. Test3 checked = ' + $('#test3').prop('checked'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="radio" runat="server" name="testGroup" id="test1" /><label for="<%=test1.ClientID %>" style="cursor:hand" runat="server">Test1</label>

<input type="radio" runat="server" name="testGroup" id="test2" /><label for="<%=test2.ClientID %>" style="cursor:hand" runat="server">Test2</label>

<input type="radio" runat="server" name="testGroup" id="test3" /> <label for="<%=test3.ClientID %>" style="cursor:hand">Test3</label>

et dans votre méthode, vous pouvez utiliser comme

return $('#test2').prop('checked');
0
Hamza Khanzada

Pourquoi s'embêter avec tous les sélecteurs de fantaisie? Si vous utilisez correctement ces attributs id = "", alors 'test2' doit être la seule balise avec cet identifiant sur la page. La propriété boolean .checked vous dira si elle est cochée ou non:

if ($('test2').checked) {
    ....
}

De plus, vous n'avez défini aucune valeur pour ces boutons radio. Ainsi, quel que soit le bouton sélectionné, vous obtiendrez simplement un "testGroup =" vide soumis au serveur.

0
Marc B

Vous devez supprimer le "@" avant "nom"; ce n'est plus nécessaire (pour les versions actuelles de jQuery). 

Vous voulez renvoyer tous les éléments vérifiés avec le nom 'test2', mais vous n'avez aucun élément portant ce nom, vous utilisez un id de 'test2'.

Si vous souhaitez utiliser des identifiants, essayez simplement:

return $('#test2').attr('checked');
0
Cᴏʀʏ