Je veux vérifier si une case à cocher vient d'être décochée, lorsqu'un utilisateur clique dessus. La raison en est que je souhaite effectuer une validation lorsqu'un utilisateur décoche une case. Parce qu'au moins une case doit être cochée. Donc, s'il décoche le dernier, il se vérifie automatiquement à nouveau.
Avec jQuery, je peux facilement savoir s'il est vérifié ou non:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Mais je veux en fait seulement avoir une instruction if qui vérifie si une case à cocher vient d'être décochée.
J'ai donc pensé que je pourrais le faire avec le code suivant:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Mais cela affichera toujours le message «non coché». Pas vraiment ce à quoi je m'attendais ...
démo: http://jsfiddle.net/tVM5H/
Alors finalement j'ai besoin de quelque chose comme:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Mais évidemment cela ne fonctionne pas. Je préfère ne pas utiliser le premier exemple, car j'aurais alors une instruction «else» inutile alors que je n'ai besoin que d'une instruction «if».
Alors, première chose, est-ce un bogue jQuery? Parce que pour moi, c'est un comportement inattendu. Et deuxièmement, quelqu'un a-t-il des idées pour une bonne alternative?
jQuery pour vérifier vérifié? Vraiment?
if(!this.checked) {
N'utilisez pas de bazooka pour faire le travail d'un rasoir.
la source
$(this)[0].checked
.checked
là où ils ont.is('checked')
ne fonctionnera pas en soi.$(document).ready(function() { $("#check1").click(function() { var checked = $(this).is(':checked'); if (checked) { alert('checked'); } else { alert('unchecked'); } }); });
la source
<script type="text/javascript"> if(jQuery('input[id=input_id]').is(':checked')){ // Your Statment }else{ // Your Statment } OR if(jQuery('input[name=input_name]').is(':checked')){ // Your Statment }else{ // Your Statment } </script>
Code tiré d'ici: http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html
la source
Découvrez quelques-unes des réponses à cette question - je pense que cela pourrait s'appliquer à la vôtre:
comment exécuter la fonction de clic après le comportement par défaut d'un élément
Je pense que vous rencontrez une incohérence dans l'implémentation de la
onclick
fonction dans le navigateur . Certains choisissent de cocher la case avant le déclenchement de l'événement et d'autres après.la source
La réponse a déjà été publiée, mais nous pouvons également utiliser la jquery de cette manière
démo
$(function(){ $('#check1').click(function() { if($('#check1').attr('checked')) alert('checked'); else alert('unchecked'); }); $('#check2').click(function() { if(!$('#check2').attr('checked')) alert('unchecked'); else alert('checked'); }); });
la source
Fais-le comme ça
if (typeof $(this).attr("checked") == "undefined" ) // To check if checkbox is checked if( $(this).attr("checked")=="checked")
la source
this.checked
. La première ligne n'a pas besoin detypeof
là (elle ne lèvera jamais aReferencError
). Vous devriez également utiliserprop()
au lieu deattr()
, qui renverra un booléen, ce qui rendra votre deuxième également redondant.