jquery: entrée bouton radio attribut checked est indéfini
-
20-09-2019 - |
Question
J'ai ce qui suit et dans cet ordre:
<script type="text/javascript">
$(document).ready(function(){
var overwrite = $('#itemList input:radio:checked').val()
alert('value = '+ overwrite);
});
</script>
<body>
<form ..... >
<div id="itemList">
Overwrite?
<input type="radio" value="Yes" class="overWrite" name="overWrite" >Yes
<input type="radio" value="No" class="overWrite" name="overWrite" >No
</div>
</form>
</body>
quand il fonctionne, l'alerte aura « valeur = non définie »
Mais, si je mets le javascript après la div (ou corps), l'alerte revient avec « valeur = Oui »
Pourquoi ne jquery reconnaît pas la radio de type au début de la page? Si je crée un type = « caché », jquery peut lire / reconnaître la valeur si au début de la page. Lorsque type = 'radio', le comportement est différent
La solution
problème que vous utilisez en semble être qu'il n'y a tout simplement pas de boutons radio vérifiés sur la charge de la page afin que votre jquery retourne un objet nul.
vérifie « non » par défaut et renvoie la valeur correcte. Donc votre javascript est techniquement correct, il vous suffit de vérifier les valeurs NULL
<head>
<title>jQuery Tester</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<div id="itemList">
Overwrite?
<input type="radio" value="Yes" class="overWrite" name="overWrite" />Yes
<input type="radio" value="No" class="overWrite" name="overWrite" checked="checked" />No
</div>
<script type="text/javascript">
$(document).ready(function(){
var overwrite = $('#itemList input:radio:checked').val();
alert('value = ' + overwrite);
});
</script>
</body>
</html>
Autres conseils
J'ai eu le même problème avec 'indéfini'.
quand je l'ai testé cette
var isChecked = $('#itemList').attr('checked');
isChecked était 'non défini'
et pour cela
var isChecked = $('#itemList').prop('checked');
isChecked est vrai ou faux