Conflit entre deux formulaires simples.

Conflit entre deux formulaires simples. - HTML/CSS - Programmation

Marsh Posté le 19-10-2010 à 13:16:10    

Bonjour,
 
Je vien solliciter votre aide car je bloque depuis deux jours sur un probleme et j'espere qu'un oeil avisé pourra m'éclairer.
Je vous explique en deux mots.
J'ai deux formulaires, le premier ici est fictif et me sert normalement a genérer une liste dans le deuxieme.  
Dans le deuxieme j'ai une liste de checkbox  dont une "maitre" qui me sert a cocher toutes les autres grace a un petit script.
Mon probleme est que le script ne marche pas, il n'est meme pas ateint lorsque le premier formulaire est présent.
Si je suprime le premier formulaire le script fonction et toute mes checkbox sont cocher lorsque je selection la checkbox "maitre".  
Avec le deux formulaire l'erreure généré lorsque je selectionne la box "maitre" est:
"document.form2.allChecked" a la valeur null...
 
Si quelqu'un pourrais regarder mon code et me dire ou est le conflit je lui en serait bien reconnaissant.
Merci,
 
 
 
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>inventaire</title>
       
 
<script type="text/javascript">
 //checkbox ou une liste de checkbox.
function selectallbox(cas,choix){alert('ok');
  //test si on a plusieur ligne
  if(choix.length>0){
    if (cas.checked){
      for (var i=0; i<choix.length;i++){
        choix[i].checked=true
      }
    }
    else{
      for (var i=0; i<choix.length;i++){
        choix[i].checked=false
      }
    }
  }
  else{
    if (cas.checked){
      choix.checked=true
    }
    else{
      choix.checked=false
    }
  }
}
   
 </script>        
     
   </head>
 
   <body>
   <div id="corps">
     
     
    <h3>Creation inventaire</h3>
    <form action="inventaire-test.html" method="post" name="form1">
    <select name="pays" id="pays" >  
    <option selected>...Choisissez un pays...</option>  
    <option>Tous</option>  
    <option>algerie</option>  
    <option>portugal</option>  
    <option>italie</option>
    <option>espagne</option>
    <option>autre</option>
    </select>  <br><br>
     
    <input type="submit" name="generer_choix" value="Generer choix"
 
  </form>
     <br><br>
   
   
   
 
   
  <div >  
  <form action="inventaire-test.html" method="post" name="form2">
    <br />
  <input type="checkbox" name="allChecked" onClick="selectallbox(document.form2.allChecked,document.form2.italie_baby)">
  <h3>italie-baby</h3>
   
    <input type="checkbox" id="italie_baby" name="valBox[]" value="502"><input type="text" value="italie-baby-b-xl" ><br>
    <input type="checkbox" id="italie_baby" name="valBox[]" value="505"><input type="text" value="italie-baby-b-s" ><br>
    <input type="checkbox" id="italie_baby" name="valBox[]" value="506"><input type="text" value="italie-baby-b-xs" ><br>
     
    <br><br>
  <input type="submit" name="generer_fichier" value="generer le fichier">
  </form>
  </div>
   
   
  <br><br>
   
   
       </div>
    </body>
</html>
 
 
 
   

Reply

Marsh Posté le 19-10-2010 à 13:16:10   

Reply

Marsh Posté le 19-10-2010 à 20:52:36    

Je tien a préciser qu'il n'y a que le code html a corriger, le script marche très bien, je l'ai mis pour ceux qui souhaiterais faire le teste chez eux.
Pour ma part c'est incomprehensible, le code me semble correcte, mais si quelqu'un aurais le moindre debut d'une idée ou une suggestion ça me serait vraiment utile.
Je vous remercie d'avance.

Reply

Marsh Posté le 20-10-2010 à 03:32:50    

Bonjour,
Je ne voudrais pas te décourager, mais ton code marche à merveille :
http://img818.imageshack.us/img818/7052/cdeom.jpg
@++

Reply

Marsh Posté le 20-10-2010 à 12:23:29    

cetplus a écrit :

Bonjour,
Je ne voudrais pas te décourager, mais ton code marche à merveille :
http://img818.imageshack.us/img818/7052/cdeom.jpg
@++


 
Bonjour,
Je te remercie d'avoir pris le temps d'essayer chez toi.
Ca voudrait dire que ça vien de mon navigateur?  
j'utilise IE.8, es-ce que tu peut me dire avec quel navigateur tu a fait le teste stp?
Encore merci.

Reply

Marsh Posté le 20-10-2010 à 18:27:30    

Bon et bien j'ai testé avec FireFox et effectivement ça marche.
EN fait mon probleme vien de l'identification de ma box "maitre" a cette ligne:
onClick="selectallbox(document.form2.allChecked,document.form2.italie_baby)"
 
Es-ce que quelqu'un connait la syntaxe correcte sous IE pour pointer un objet, en l'occurence là, ma box "maitre"?

Reply

Marsh Posté le 21-10-2010 à 00:23:39    

faut oublier l'écriture "document.form" ... et mettre un document.getElementById ...
A mon avis, tu devrais passer ça dans une fonction javascript.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 21-10-2010 à 00:43:03    

Merci NewsletTux,
Oui je crois que je vais essayer de faire ça parceque je ne trouve pas la solution a mon probleme et ça me rend dingue là.
Je déteste ces checkbox j'arriverai jamais a mis faire :)  
J'essaie de faire ça demain et je posterais le resultat si c'est concluant.
Encore merci,

Reply

Marsh Posté le 21-10-2010 à 23:28:03    

C'est bon j'ai reussi a corriger le script.
C'es n'était pas possible d'accéder a mes checkbox via getElementById car l'id doit obligatoirement avoir un nom unique dans le document, du coup seul la premiere checkbox était pointée.
La seul façon que j'ai trouvé pour pointer l'ensemble des box est avec cette syntaxe:
 
Pour la box maitre:
onClick="selectallbox(this.form,this.value)"
 
Et pour dans le script je pointe mes box comme ceci:
var choix=f.elements["valBox[]"];
 
je met le script entier pour ceux que ça interesseraient, et merci pour votre aide.
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >  
   <head>  
       <title>inventaire</title>  
       
 
<script type="text/javascript">  
 //checkbox ou une liste de checkbox.  
function selectallbox(f,val){
  //test si on a plusieur ligne  
 
 var cas=document.getElementById('all'+val);
 var choix=f.elements["valBox[]"];
 
 
  if(choix.length>0){  
   
    if (cas.checked){  
      for (var i=0; i<choix.length;i++){  
   if (choix[i].id==val){
        choix[i].checked=true  
  }
   
      }  
    }  
    else{  
      for (var i=0; i<choix.length;i++){  
   if (choix[i].id==val){
        choix[i].checked=false  
  }
      }  
    }  
  }  
  else{  
    if (cas.checked){  
      choix.checked=true  
    }  
    else{  
      choix.checked=false  
    }  
  }  
}  
   
 </script>          
     
   </head>  
   
   <body>  
   <div id="corps">  
     
     
    <h3>Creation inventaire</h3>  
   <form action="inventaire-test.html" method="post" name="form1">  
    <select name="pays" id="pays" >  
    <option selected>...Choisissez un pays...</option>  
    <option>Tous</option>  
    <option>algerie</option>  
    <option>portugal</option>  
    <option>italie</option>  
    <option>espagne</option>  
    <option>autre</option>  
    </select>  <br><br>  
     
    <input type="submit" name="generer_choix" value="Generer choix"  
 
  </form>  
 
 
     <br><br>  
   
   
   
   
   
   
   
  <div >  
   
   
  <form action="inventaire-test.html" method="post" name="form2">  
    <br />  
 
 <input type="checkbox" name="allChecked" id="allitalie_baby" value="italie_baby" onClick="selectallbox(this.form,this.value)">
   
  <h3>italie-baby</h3>  
   
   
     
    <input type="checkbox" id="italie_baby" name="valBox[]" value="502"><input type="text" value="italie-baby-b-xl" ><br>  
    <input type="checkbox" id="italie_baby" name="valBox[]" value="505"><input type="text" value="italie-baby-b-s" ><br>  
    <input type="checkbox" id="italie_baby" name="valBox[]" value="506"><input type="text" value="italie-baby-b-xs" ><br>  
     
   
    <br><br>  
  <input type="submit" name="generer_fichier" value="generer le fichier">  
  </form>  
  </div>  
   
   
  <br><br>  
   
   
       </div>  
    </body>  
</html>  
 
 
 
 
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed