[PHP/JS] Checkbox name="resa[]"

Résolu/Fermé
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 - 11 avril 2010 à 12:37
axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 - 11 avril 2010 à 21:06
Bonjour à tous !

Voila mon petit souci:

- J'ai un formulaire en HTML (généré par PHP) contenant une ou plusieurs checkbox selon les réponses de ma BDD.
- J'ai également un script javascript qui (onsubmit) vérifie le nombre de checkbox cochées. Si aucune, message d'erreur, return false. Si au moins une, rien, envoie du formulaire.

- Ne projet est un gestionnaire de vidéoclub, quand on fait une recherche (exemple: Star Wars), ne pouvant connaitre le nombre de réponses, j'utilise donc comme nom pour les box: name="resa[]".

- Mon problème est que quand il n'y a QU'UNE seule checkbox, le JS ne détecte aucune checkbox (cochée ou pas), et je pense que ça vient du nom des box...

Auriez-vous une petite idée de comment remédier à ça, comment nommer mes box, ou une alternative...

Voici ma situation actuelle pour une seule réponse:
function test_box(chkbox) {
      var msg = "S'il n'y a pas au moins une case cochée,\nComment effectuer la réservation ??";
      
      for (i=0; i<chkbox.length; i++) {
          if(chkbox[i].checked) {
              msg = "";
              break; 
          }
      }
     
     if (msg == "") return(true);
     else {
          alert(msg);
          return(false);
     }
}


<form action="resa.php?page=add" method="post" name="search_result" onsubmit="return test_box( elements['resa[]'] );">
            <table class="result" cellspacing="10px">
                <tr>
                    <th>Titre</th>
                    <th>Réservation</th>
                </tr>

                <tr>
                    <td>&nbsp;</td>
                </tr>
                <tr>
                    <td><strong>Star-Wars III</strong><br /><cite>George LUCAS</cite></td>
                    <td><input type="checkbox" name="resa[]" value="3"  /></td>
                </tr>
            </table>

        <br /><br />
        <input type="submit" value="Réserver" />
        <form>


PS: Aucun problème pour plus d'une réponse, même si je ne coche qu'une seule...

Merci pour votre aide !

A voir également:

1 réponse

axel50397 Messages postés 113 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 17 mars 2014 16
11 avril 2010 à 21:06
function test_box(chkbox, dmsg) {
    var msg = "S'il n'y a pas au moins une case cochée,\nComment effectuer la "+dmsg+" ??";

    if (chkbox.length)
    {
        for (i=0; i<chkbox.length; i++) {
            if(chkbox[i].checked)
                return(true);
        }
    }
    else
    {
        if (chkbox.checked)
            return(true);
    }
    
    alert(msg);
    return(false);
}


L'attribut length n'existe pas quand il n'y a qu'un seul élément.

Merci à Tuxkowo =)
0