Il y a environ un mois, la question de Mitt est restée sans réponse. Malheureusement, je suis dans la même situation maintenant.
http://api.jquery.com/change/#comment-133939395
Voici la situation: j'utilise jQuery pour capturer les modifications dans un bouton radio. Lorsque le bouton radio est sélectionné, j'active une zone d'édition. Lorsque le bouton radio est désélectionné, je souhaite que la zone d'édition soit désactivée.
L'habilitation fonctionne. Lorsque je choisis un bouton radio différent dans le groupe, l' change
événement n'est pas déclenché. Est-ce que quelqu'un sait comment réparer ceci?
<input type="radio" id="r1" name="someRadioGroup"/>
<script type="text/javascript">
$("#r1").change(function () {
if ($("#r1").attr("checked")) {
$('#r1edit:input').removeAttr('disabled');
}
else {
$('#r1edit:input').attr('disabled', true);
}
});
</script>
javascript
jquery
html
radio-button
antwarpes
la source
la source
id=r1
Réponses:
On dirait que la
change()
fonction n'est appelée que lorsque vous cochez un bouton radio, pas lorsque vous le décochez. La solution que j'ai utilisée est de lier l'événement de modification à chaque bouton radio:Ou vous pouvez donner à tous les boutons radio le même nom:
Voici un exemple de travail de jsfiddle (mis à jour à partir du commentaire de Chris Porter.)
Selon le commentaire de @ Ray, vous devriez éviter d'utiliser des noms avec
.
eux. Ces noms fonctionnent dans jQuery 1.7.2 mais pas dans les autres versions ( exemple jsfiddle ).la source
partie jquery
voici la DEMO
la source
.attr('checked')
en.prop('checked')
.Vous pouvez vous lier à tous les boutons radio à la fois par leur nom:
Exemple de travail ici: http://jsfiddle.net/Ey4fa/
la source
Cela fonctionne normalement pour moi:
if ($("#r1").is(":checked")) {}
la source
Mon problème était similaire et cela a fonctionné pour moi:
la source
Disons que ces boutons radio sont à l'intérieur d'un
div
qui a l'idradioButtons
et que les boutons radio ont le même nom (par exemplecommonName
) alors:la source
L'
change
événement qui ne se déclenche pas lors de la désélection est le comportement souhaité. Vous devez exécuter un sélecteur sur l'ensemble du groupe radio plutôt que sur le seul bouton radio. Et votre groupe radio doit avoir le même nom (avec des valeurs différentes)Considérez le code suivant:
J'ai le même cas d'utilisation que le vôtre, c'est-à-dire pour afficher une zone de saisie lorsqu'un bouton radio particulier est sélectionné. Si l'événement était également déclenché par désélection, j'obtiendrais 2 événements à chaque fois.
la source
Même problème ici, cela a très bien fonctionné:
la source
Avec Ajax, pour moi travaillé:
Html:
Javascript:
Et php:
la source