jQuery case à cocher modifier et cliquez sur l'événement
JS:
$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
Ici .change()
les mises à jour de la zone de texte valeur de la case d'état. J'utilise .click()
pour confirmer l'action sur les décocher. Si l'utilisateur sélectionne l'annuler, la coche est restauré, mais .change()
feux de avant la confirmation.
Cela laisse les choses dans un état incohérent et de la zone de texte dit false lorsque la case est cochée.
Comment puis-je faire face à l'annulation et de garder la zone de texte valeur compatible avec la vérification de l'état?
- Il travaille dans FF et chrome et a expliqué comportement dans IE 8. Il peut donc être important de noter que les navigateurs vous en avez besoin pour le travail, et quels sont ceux que vous voyez l'erreur.
- C'est pas le meilleur, mais je crois que c'est de travailler pour moi ici: http://jsfiddle.net/Skooljester/2Xxcn/.
Vous devez vous connecter pour publier un commentaire.
Eh bien, je ne vois pas une réponse qui correspond à la mienne donc je vais poster cette. Testé dans JSFiddle et fait ce que vous demandez.Cette approche a l'avantage de tir lorsqu'une étiquette associée à une case à cocher est cliqué.
Réponse Originale À Cette Question:
Mise À Jour De Réponse:
this.checked
au lieu de$(this).is(':checked')
: jsperf.com/prop-vs-ischecked/5this.checked
est beaucoup plus court à écrire + javascript natif, il pourrait être vraiment la peine de l'aide en général (à l'exception du ~200 à 300 fois plus rapide).Démo
Utilisation
mousedown
mousedown
. Peut-il être modifié de sorte qu'il arrive à décocher?<input type="checkbox" id="checkbox1" /> <label for="checkbox1">click</label>
La plupart des réponses ne s'y accroche (sans doute) si vous utilisez
<label for="cbId">cb name</label>
. Cela signifie que lorsque vous cliquez sur l'étiquette, il va de cocher la case au lieu de le faire directement en cliquant sur la case à cocher. (Pas exactement à la question, mais les divers résultats de recherche ont tendance à venir ici)Dans ce cas, vous pouvez utiliser:
Earlier versions of jQuery:
JSFiddle exemple avec jQuery 1.6.4
jQuery 1.7+
JSFiddle exemple avec la dernière jQuery 2.x
Bien .. juste pour le plaisir de l'enregistrement d'un mal de tête (son passé minuit ici), j'ai pu arriver:
Espère que cela aide
Pour moi cela fonctionne très bien:
Ici vous
Html
JavaScript
De se débarrasser de l'événement de changement, et au lieu de modifier la valeur de la textbox dans l'événement click. Plutôt que de retourner le résultat de la confirmer, de l'attraper dans un var. Si c'est vrai, changer la valeur. Puis retourner le var.
Case à cocher et cliquez sur la vérification de la valeur dans la même boucle d'événement est le problème.
Essayez ceci:
Démo: http://jsfiddle.net/mrchief/JsUWv/6/
si vous utilisez le iCheck Jquery utiliser le code ci-dessous
Essayer cette
il suffit juste d'utiliser le clic de l'événement
ma case id est CheckAll
radio obtenir la valeur par nom
Je ne sais pas pourquoi tout le monde fait ce si compliqué.
C'est tout ce que j'ai fait.
Réponse tardive, mais vous pouvez également utiliser
on.("change")
JS:
HTML: