Bonjour,
J'ai un formulaire qui a des INPUT/checkboxes comme champs.
Le formulaire en question doit-etre envoyé à un script PHP.
Les "name" de chaque checkbox est le meme, de la forme "un_nom[]".
Ce sont les "value" qui les différencient.
LE souci c'est que maintenant, je veux faire un script qui coche/decoche
toutes les checboxes d'un coup. Je m'y prends avec getElementsById(): sous
Konqueror, à cause des [], "ça ne marche pas".
Est-ce le comportement normal?
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un
check all /uncheck all fonctionnel.
Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le
futur sur cette page, cette solution ne me convient pas.
Auriez-vous des pistes?
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
J'ai un formulaire qui a des INPUT/checkboxes comme champs. Le formulaire en question doit-etre envoyé à un script PHP. Les "name" de chaque checkbox est le meme, de la forme "un_nom[]". Ce sont les "value" qui les différencient. LE souci c'est que maintenant, je veux faire un script qui coche/decoche toutes les checboxes d'un coup. Je m'y prends avec getElementsById():
Vu qu'un id est forcément unique dans la totalité d'une page HTML, il ne peut pas exister de fonction getElement*s*ById(). Pour la même raison il ne peut pas exister de fonction te retournant plusieurs éléments ayant le même id.
Peut-être confonds-tu avec getElementsByName() ?
sous Konqueror, à cause des [], "ça ne marche pas". Est-ce le comportement normal?
Je pense que oui. Maintenant, si ça ne fonctionne toujours pas avec getElementsByName(), tu peux essayer avec un getElementById() sur le formulaire, suivi par un firstChild() et des nextSibling().
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un check all /uncheck all fonctionnel. Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le futur sur cette page, cette solution ne me convient pas. Auriez-vous des pistes?
J'ai un formulaire qui a des INPUT/checkboxes comme champs.
Le formulaire en question doit-etre envoyé à un script PHP.
Les "name" de chaque checkbox est le meme, de la forme "un_nom[]".
Ce sont les "value" qui les différencient.
LE souci c'est que maintenant, je veux faire un script qui coche/decoche
toutes les checboxes d'un coup. Je m'y prends avec getElementsById():
Vu qu'un id est forcément unique dans la totalité d'une page HTML, il ne
peut pas exister de fonction getElement*s*ById(). Pour la même raison il
ne peut pas exister de fonction te retournant plusieurs éléments ayant
le même id.
Peut-être confonds-tu avec getElementsByName() ?
sous Konqueror, à cause des [], "ça ne marche pas".
Est-ce le comportement normal?
Je pense que oui. Maintenant, si ça ne fonctionne toujours pas avec
getElementsByName(), tu peux essayer avec un getElementById() sur le
formulaire, suivi par un firstChild() et des nextSibling().
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un
check all /uncheck all fonctionnel.
Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le
futur sur cette page, cette solution ne me convient pas.
Auriez-vous des pistes?
J'ai un formulaire qui a des INPUT/checkboxes comme champs. Le formulaire en question doit-etre envoyé à un script PHP. Les "name" de chaque checkbox est le meme, de la forme "un_nom[]". Ce sont les "value" qui les différencient. LE souci c'est que maintenant, je veux faire un script qui coche/decoche toutes les checboxes d'un coup. Je m'y prends avec getElementsById():
Vu qu'un id est forcément unique dans la totalité d'une page HTML, il ne peut pas exister de fonction getElement*s*ById(). Pour la même raison il ne peut pas exister de fonction te retournant plusieurs éléments ayant le même id.
Peut-être confonds-tu avec getElementsByName() ?
sous Konqueror, à cause des [], "ça ne marche pas". Est-ce le comportement normal?
Je pense que oui. Maintenant, si ça ne fonctionne toujours pas avec getElementsByName(), tu peux essayer avec un getElementById() sur le formulaire, suivi par un firstChild() et des nextSibling().
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un check all /uncheck all fonctionnel. Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le futur sur cette page, cette solution ne me convient pas. Auriez-vous des pistes?
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un check all /uncheck all fonctionnel. Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le futur sur cette page, cette solution ne me convient pas.
En quoi ça gène d'avoir plusieurs forms ?
<html> <script type="text/javascript"> function resete(quoi) { // décocher les checkboxes du form if(quoi.checked) { var el = quoi.form.elements['truc[]']; for(var i=0; i<el.length; i++) el[i].checked = false; } } onload = function() { // decocher la checkbox principale var I = document.getElementsByTagName('INPUT'); for(var j=0; j<I.length; j++) if(I[j].name == 'truc[]') I[j].onclick = function() { this.form.elements[0].checked = false; } } </script>
Si les noms peuvent être différents d'un form à l'autre il n'y a qu'une petite modif à prévoir :
function resete(quoi) { // décocher les checkboxes du form if(quoi.checked) { var el = quoi.form.elements[quoi.form.elements[1].name]; for(var i=0; i<el.length; i++) el[i].checked = false; } }
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un
check all /uncheck all fonctionnel.
Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le
futur sur cette page, cette solution ne me convient pas.
En quoi ça gène d'avoir plusieurs forms ?
<html>
<script type="text/javascript">
function resete(quoi) { // décocher les checkboxes du form
if(quoi.checked) {
var el = quoi.form.elements['truc[]'];
for(var i=0; i<el.length; i++) el[i].checked = false;
}
}
onload = function() { // decocher la checkbox principale
var I = document.getElementsByTagName('INPUT');
for(var j=0; j<I.length; j++)
if(I[j].name == 'truc[]')
I[j].onclick = function() {
this.form.elements[0].checked = false;
}
}
</script>
Si les noms peuvent être différents d'un form à l'autre
il n'y a qu'une petite modif à prévoir :
function resete(quoi) { // décocher les checkboxes du form
if(quoi.checked) {
var el = quoi.form.elements[quoi.form.elements[1].name];
for(var i=0; i<el.length; i++) el[i].checked = false;
}
}
--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Si je m'y prends avec le tableau des forms, ça fonctionne bien: j'ai bien un check all /uncheck all fonctionnel. Mais comme il se peut qu'il y ait un nombre de formulaire variable dans le futur sur cette page, cette solution ne me convient pas.
En quoi ça gène d'avoir plusieurs forms ?
<html> <script type="text/javascript"> function resete(quoi) { // décocher les checkboxes du form if(quoi.checked) { var el = quoi.form.elements['truc[]']; for(var i=0; i<el.length; i++) el[i].checked = false; } } onload = function() { // decocher la checkbox principale var I = document.getElementsByTagName('INPUT'); for(var j=0; j<I.length; j++) if(I[j].name == 'truc[]') I[j].onclick = function() { this.form.elements[0].checked = false; } } </script>
Si les noms peuvent être différents d'un form à l'autre il n'y a qu'une petite modif à prévoir :
function resete(quoi) { // décocher les checkboxes du form if(quoi.checked) { var el = quoi.form.elements[quoi.form.elements[1].name]; for(var i=0; i<el.length; i++) el[i].checked = false; } }
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
ASM
Si les noms peuvent être différents d'un form à l'autre il n'y a qu'une petite modif à prévoir :
function resete(quoi) { // décocher les checkboxes du form if(quoi.checked) { var el = quoi.form.elements[quoi.form.elements[1].name]; for(var i=0; i<el.length; i++) el[i].checked = false; } }
à compléter de :
onload = function() { // decocher la checkbox principale var F = document.forms, I; for(var i=0; i<F.length; i++) { I = F[i].getElementsByTagName('INPUT'); for(var j=0; j<I.length; j++) if(I[j].name && I[j].type == 'checkbox') I[j].onclick = function() { this.form.elements[0].checked = false; } } }
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Si les noms peuvent être différents d'un form à l'autre
il n'y a qu'une petite modif à prévoir :
function resete(quoi) { // décocher les checkboxes du form
if(quoi.checked) {
var el = quoi.form.elements[quoi.form.elements[1].name];
for(var i=0; i<el.length; i++) el[i].checked = false;
}
}
à compléter de :
onload = function() { // decocher la checkbox principale
var F = document.forms, I;
for(var i=0; i<F.length; i++) {
I = F[i].getElementsByTagName('INPUT');
for(var j=0; j<I.length; j++)
if(I[j].name && I[j].type == 'checkbox')
I[j].onclick = function() {
this.form.elements[0].checked = false;
}
}
}
--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Si les noms peuvent être différents d'un form à l'autre il n'y a qu'une petite modif à prévoir :
function resete(quoi) { // décocher les checkboxes du form if(quoi.checked) { var el = quoi.form.elements[quoi.form.elements[1].name]; for(var i=0; i<el.length; i++) el[i].checked = false; } }
à compléter de :
onload = function() { // decocher la checkbox principale var F = document.forms, I; for(var i=0; i<F.length; i++) { I = F[i].getElementsByTagName('INPUT'); for(var j=0; j<I.length; j++) if(I[j].name && I[j].type == 'checkbox') I[j].onclick = function() { this.form.elements[0].checked = false; } } }
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé