Je rencontre des problèmes pour obtenir une fonction qui clique sur toutes les cases cochées de la recherche. L'événement click semble se déclencher, mais aucune case n'est cochée et myFunc() n'est pas appelée.L'action de clic jQuery ne déclenche pas l'attribut onclick
Cela fonctionne parfaitement en cliquant sur chaque case à cocher manuellement, mais qui veut faire cela avec plus de 40 cases à cocher - pas mes utilisateurs.
Vous pouvez vous demander pourquoi j'utilise un div-onclick au lieu de directement sur la case à cocher d'entrée. C'est parce que je veux donner à mes utilisateurs une zone plus grande à cliquer sur qu'une petite case à cocher.
Je souhaite fournir à mes utilisateurs un seul lien hypertexte pour sélectionner plusieurs cases à cocher qui correspondent à certaines valeurs d'attribut.
J'ai besoin d'une solution rapide car je suis à court de temps.
HTML
<div id="container">
<a href="#" onclick="clickAndCheckAllMatch('search for this text');return false;">some text</a>
<div id="*actual_ID*" onclick="myFunc(a, b, c, d);">
<input type="checkbox" id="book-*actual_ID*" onclick="this.parentNode.click;return false;">
</div>
</div>
JS
function myFunc(a, b, c, d) {
// does stuff
}
function clickAndCheckAllMatch(value) {
$('div[onclick*='+value+']').each(function(idx,e){
$('book-'+this.id).click();
}
EDIT
Quand j'ai changé de div-étiquette alors je na pas avoir à corriger l'état de case à cocher. Un div ou un élément de bloc doit présenter un problème.
J'ai également supprimé l'onclick des * div * s, ce qui signifiait que j'étais capable de cibler les cases à cocher directement et que je pouvais changer leur valeur d'ID en seulement * real_ID *.
function clickAndCheckAllMatch(value) {
$('input[onclick*='+value+']').each(function(idx,e){
// e == this
$(this)[0].click();
if ($(this).attr('disabled')) {
//do nothing
} else {
if ($(this).attr('checked')) {
//do nothing
} else {
$(this)[0].click(); // only one checkbox per ID
}
}
});
}
function CheckAll() {
$('#container input[type=checkbox]:not(:checked)').each(function(idx,e){
$(this).click(); // notice the difference ?
});
}
Vous devriez probablement lier vos gestionnaires d'événements avec jQuery, puisque vous l'utilisez quand même. Les attributs "onclick" démodés sont généralement obsolètes ici en 2010. – Pointy
Source de cette revendication? En outre, je ne peux pas utiliser globalement bind, car chaque div onclick est unique et son généré à partir d'une partie non-jquery. – Kim