2009-02-13 5 views
0

Je suis nouveau en javascript, mon problème est effectivement: J'ai une page php qui produit un formulaire unique avec plusieurs blocs de processus ou sections, chacun avec un groupe de cases à cocherTechnique pour définir dynamiquement plusieurs cases à cocher, en mélangeant des formes javascript et php

par exemple

<form action='./this.php' method='POST'> 
One<br> 
<input type='checkbox' name='one[part1]'>a<br> 
<input type='checkbox' name='one[part2]'>b<br> 
<input type='checkbox' name='one[part3]'>c<br> 

<input type='checkbox' name='one[all]'>all<br> 
<br> 
Two<br> 
<input type='checkbox' name='two[part1]'>a<br> 
<input type='checkbox' name='two[part2]'>b<br> 
<input type='checkbox' name='two[part3]'>c<br> 

<input type='checkbox' name='two[all]'>all<br> 

<input type='submit'> 
</form> 

problème exemple: Je veux être en mesure de cliquer sur les deux [tout] case à cocher et ont deux [part1], deux [part2], et deux [part3] deviennent tous vérifiés.

Si je cite toutes les cases du même groupe, la valeur de php ne s'affichera que pour un, donc je dois garder les noms différents.

Existe-t-il une méthode simple pour ce faire, à moins de dynamiquement (via php) produisant des fonctions onclick distinctes pour chaque section. Notez que toutes les sections ne seront pas identiques, parfois one.part1 peut ne pas être disponible pour vérification, mais ses informations seront affichées et les noms des cases à cocher commenceront à partir du début.

Ou peut-être traverser le DOM pour trouver toutes les cases à cocher après un marqueur de départ et avant le tout vérifier.

Espérons que c'est assez clair.

+0

Vous pouvez utiliser jQuery avec un peu de magie de sélecteur pour sélectionner les cases [toutes] et les cases correspondantes. Puis faites correspondre leurs événements de clic. Ne devrait pas être trop difficile. (Trop occupé à faire maintenant, n'importe qui, n'hésitez pas à le faire vous-même.) – strager

Répondre

0

Vous avez besoin d'une fonction javascript onClickAll qui prend un paramètre du nom du groupe. Vous pouvez ensuite parcourir chaque case retournée par getElementsByName et la cocher cochée/non cochée. Sur la publication, vous obtiendrez un tableau de valeurs pour les cases à cocher avec le nom du groupe utilisé. En bouclant, vous savez ce qui a été vérifié et ce qui ne l'était pas. Je voudrais écrire quelques exemples de code mais cela fait un moment que j'ai travaillé en PHP/Javascript, je pense que c'est mieux que quelqu'un de mieux le faire. Mais ce que je vous ai dit devrait être l'essentiel. Bonne chance!

+0

Correct, code dans une autre réponse (problème d'espace) – Louis

2

Changé la forme pour être plus comme:

<input type='checkbox' name='section[one][]' value='part1'>a<br> 
<input type='checkbox' name='section[one][]' value='part2'>b<br> 
<input type='checkbox' name='section[one][]' value='part3'>c<br> 

<input type='checkbox' name='one[all]' onclick='checkAll(one,this)>all<br> 

fonction CheckAll était:

function checkAll(checkid, exby) { 
    boxes = document.getElementsByName('section[' + checkid + '][]'); 
    for (i = 0; i < boxes.length; i++){ 
     boxes[i].checked = exby.checked? true:false 
    } 
} 

Cela finit par donner encore le tableau gérable dans le poste php var tout en ayant un nom singulier.

Questions connexes