Salut J'ai créé une fonction javascript pour vérifier si le nombre de modules sélectionnés est supérieur à une valeur donnée. Ainsi, à chaque fois qu'une case à cocher est appelée, la fonction est appelée, et la fonction passe par toutes les cases à cocher et calcule le total pour voir si elle est plus grande. Mais le problème est lorsque l'utilisateur coche la case et si le total des crédits est supérieur à la valeur, je veux cocher la case check = false. Mais je ne sais pas quelle case à cocher annuler. Y a-t-il une fonction Annuler le dernier clic en JavaScript?Comment annuler la dernière case cochée?
Répondre
Je sais que ce n'est pas la réponse que vous recherchiez, mais ne serait-ce pas une meilleure expérience utilisateur de désactiver toutes les cases non cochées lorsque le nombre maximum de chèques a été atteint?
Je ne pense pas qu'il existe, mais vous pouvez toujours enregistrer une référence à la dernière case cochée, donc quand vous devez le décocher, vous l'avez là.
C'est exactement ce qu'il demande! : P – Seb
Même réponse que vous lui avez donnée, sans le code que vous avez mis là xD. –
Pas vraiment, mais vous pourriez simuler assez facilement en sauvant la dernière case cliquée. Ce code ne fonctionne pas mot pour mot, mais vous voyez l'idée:
<script>
var last_checked_box;
function onBoxClicked(box) {
if (box.checked) last_checked_box = box;
}
function undoLastBox() {
if (last_checked_box) last_checked_box.checked = false;
}
</script>
<input type="checkbox" id="box1" onClick="onBoxClicked(this)"/>
...
Cela ferait l'affaire, mais ici vous manquez les fonctions appropriées pour calculer la limite supérieure. Je vous donne une solution complète dans ma réponse :) – Seb
@Eric: pourquoi sauvegarder l'identifiant des boîtes et non une référence à la boîte elle-même, c'est-à-dire 'last_checked_box = box'? – Christoph
@SebaGR - Votre réponse est meilleure pour sa situation particulière, mais quelqu'un d'autre qui pourrait trouver cette question sur une recherche Google pourrait ne pas avoir les mêmes exigences. Je ne voulais pas non plus supposer qu'il utiliserait jQuery. –
En utilisant jQuery, vous pouvez faire quelque chose comme:
var MAX_CREDITS = 50; // just as an example
$("input[type=checkbox]").change(function(){
var totalCredits = 0;
$("input[type=checkbox]").each(function(){
// augment totalCredits accordingly to each checkbox.
});
if(totalCredits > MAX_CREDITS){
$(this).removeAttr("checked");
}
});
Si vous ne l'avez jamais utilisé jQuery avant, c'est sûrement comme un douleur pour vos yeux; mais comme vous pouvez le voir, c'est très puissant et votre problème peut être résolu en quelques lignes. Je vous recommande de l'apprendre et de l'essayer;)
Je suggère soit de tester si le nombre maximum d'objets a été vérifié et si cela est vrai, de supprimer le tout dans la même méthode ou de définir la valeur à quelque chose de caché zone de texte à l'ID de votre dernière case à cocher activée afin que vous puissiez le référencer à nouveau.
est ici une solution minimale, mais entièrement fonctionnelle et jQuery moins:
<script>
function isBox(element) {
return element.form && element.form === document.forms[0] &&
element.nodeName.toLowerCase() === 'input' &&
element.type === 'checkbox';
}
function remaining(dR) {
var field = document.forms[0].elements[0],
value = +field.value;
if(dR) return field.value = value + dR;
else return value;
}
function listener(event) {
var box = (event && event.target) ||
(window.event && window.event.srcElement);
if(isBox(box)) {
if(box.checked) {
if(remaining() > 0)
remaining(-1);
else box.checked = false;
}
else remaining(+1);
}
}
if(document.addEventListener)
document.addEventListener('click', listener, false);
else if(document.attachEvent)
document.attachEvent('onclick', listener);
</script>
<form>
<p>remaining: <input type="text" readonly="readonly" value="2"></p>
<p><input type="checkbox" id="b1"><label for="b1">box1</label></p>
<p><input type="checkbox" id="b2"><label for="b2">box2</label></p>
<p><input type="checkbox" id="b3"><label for="b3">box3</label></p>
</form>
- 1. comment obtenir la valeur d'une case cochée
- 2. Comment obtenir le résultat d'une case cochée?
- 3. jquery bouton radio case cochée attribut?
- 4. Si la case est cochée, exécutez « quelque chose »
- 5. Inclure ServiceDependancy si la case est cochée WIX
- 6. Comment puis-je déterminer si une case est cochée?
- 7. Qu'est-ce qu'une simple méthode jquery pour sélectionner une radio lorsque la case est cochée, puis désélectionner la radio lorsque la case n'est pas cochée?
- 8. Comment annuler un événement routé?
- 9. Déterminer quelle case est cochée dans une liste CheckBoxList
- 10. Javascript pour vérifier si une case à cocher est cochée ou non cochée
- 11. Désactiver certains contrôles de validation ASP.Net lorsqu'une case est cochée
- 12. Comment savoir si une case à cocher est cochée avec juste la balise de formulaire {{formickeck}}
- 13. Comment ajouter une nouvelle balise div lorsque la case est cochée avec jquery
- 14. valeurs Sélection de la base de données et faire la case cochée si elle existe
- 15. Cochez la bonne case si 'cochée' dans la base de données
- 16. Déterminez si une case à cocher est cochée lors de la soumission du formulaire
- 17. comment effectuer les événements lorsqu'une case est cochée/décochée dans jquery
- 18. Comment vérifier si une case à cocher est cochée dans ASP.NET MVC?
- 19. Comment trouver la valeur de case à cocher (cochée/décochée) dans iteamreander de la grille de données?
- 20. Validation de la case à cocher
- 21. Comment puis-je obtenir la valeur (non cochée ou non cochée) d'une checkboxlist?
- 22. Comment annuler la suppression de l'écho local
- 23. Annuler dans la sélection?
- 24. Rendre le texte dans une cellule de texte change de couleur lorsque la case à cocher Lignes a été cochée
- 25. iPhone UITableView, comment définir la ligne par défaut cochée onViewLoad?
- 26. DataTable Annuler la ligne Supprimer
- 27. CustomException cochée ou décochée
- 28. Automatisation de la case à cocher grille de données
- 29. Comment supprimer la dernière rangée d'une section?
- 30. Comment obtenir la dernière révision par fichier
Ce n'est pas un comportement normal pour tout utilisateur ... ce ne serait pas servir d'expérience conviviale. – Seb
@SebaGR: pourquoi? afficher un message qui informe l'utilisateur que le montant total a été atteint, puis désactiver toutes les cases non cochées et marquer visuellement les étiquettes appropriées sonne parfaitement utilisable – Christoph
Je suis d'accord. Vous pouvez étendre l'expérience en calculant le montant restant et en désactivant les cases à cocher qui, si elles sont cochées, ajouteront plus que le montant maximum. De cette façon, si max = 50 et que vous avez sélectionné 47, la case à cocher avec la valeur = 5 serait désactivée et la case à cocher avec la valeur = 3 sera toujours disponible :) – Danita