Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

restriction noms de checkboxes

3 réponses
Avatar
Mihamina (R12y) Rakotomandimby
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.

3 réponses

Avatar
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?


Voir ci-dessus (getElementById/firstChild/nextSibling).

Avatar
ASM
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>

<form onsubmit="return false;">
<p>tout décocher : <input type=checkbox onclick="resete(this)">
<p>item 1 : <input type=checkbox name="truc[]" value="1">
<p>item 2 : <input type=checkbox name="truc[]" value="2">
<p>item 3 : <input type=checkbox name="truc[]" value="3">
<p><input type=submit value="OK">
</form>
<form onsubmit="return false;">
<p>tout décocher : <input type=checkbox onclick="resete(this)">
<p>item 1 : <input type=checkbox name="truc[]" value="1">
<p>item 2 : <input type=checkbox name="truc[]" value="2">
<p>item 3 : <input type=checkbox name="truc[]" value="3">
<p><input type=submit value="OK">
</form>
</html>


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é

Avatar
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é