Je deviens fou en essayant de comprendre pourquoi cela ne fonctionne pas. Je crée une checkbox dynamiquement avec JS pour activer/désactiver un champ de texte (également créé dynamiquement).Le gestionnaire onclick ne se déclenche pas pour la case à cocher créée avec document.createElement
codeest assez simple:
var text = $(document.createElement("input"));
text.type = "text";
container.appendChild(text);
...
var check = $(document.createElement("input"));
check.type = "checkbox";
check.onclick = function(event) {
if (this.checked) text.enable();
else text.disable();
};
container.appendChild(check);
J'ai essayé de mettre le gestionnaire d'événements après container.appendChild(check);
, mais qui donne le même résultat.
Il n'y a pas d'erreur JS et les résultats sont identiques dans Chrome, FF3.6 et IE7. Est-ce que quelqu'un peut expliquer pourquoi cela ne fonctionne pas? Toutes les corrections seraient appréciées.
Étrangement (parce que, théoriquement, il devrait être le même que ci-dessus), en ajoutant les éléments suivants (après container.appendChild(check);
) fonctionne (case à cocher est d'abord à la page):
$$("input[type=checkbox]")[0].onclick = function(event) {
if (this.checked) text.enable();
else text.disable();
};
Je ne aime pas vraiment cela, comme semble "sale", et la case à cocher peut ne pas être la première sur la page plus tard ...
BTW, $ et $$ sont de Prototype.
Merci d'avance pour toute aide.
Lorsque je visite la case avec Chrome (et FF), il dit qu'il n'a pas d'écouteurs d'événement. Peut-être que cela aide ... – Valera