Problème de submit sous IE

Problème de submit sous IE - HTML/CSS - Programmation

Marsh Posté le 30-11-2005 à 10:02:51    

Bonjour
j'ai créé un formulaire dans lequel le submit ne marche pas sous IE, par sous Mozilla ça fonctionne nickel, tout le traitement...
Donc voilà, j'ai cherché mais je n'ai pas trouvé chaussure à mon pieds.
Voici mon code que j'exécute dans un fichier distant :
 
//Fonction qui compte le nombre d'elements de la liste
function compteElem(liste){
 var tab=0;
 for(i=0;i<liste.options.length+1;i++){
  tab = i;
 }  
 //alert ("Nombre d'element : "+tab);
 if ((tab<21)&&(tab!=0)){
  selectionElementsListe(document.forms.formulaire.liste2,'true');
  document.forms.formulaire.submit();
 }else{
  if (tab>20){
   alert("Vous avez sélectionné trop de portefeuilles, la limite est fixé à 20." );
  }else{
   if (tab==0){
    alert("Veuillez sélectionné au moins un portefeuille.Merci." );
   }
  }
 }
}
 
Et voici mon fichier HTML :
<center><form name="formulaire" style="margin:0" method="GET" action="SUPERVISIONalertes.pl">
<fieldset unselectable="on" style="width:300px">
<legend align="right">
  <a href="javascript:selectionElementsListe(document.forms.formulaire.liste2,'true');document.forms['formulaire'].submit();">
  <div id="imgSelect"></div>
  </a>
</legend>
<table border="0" summary="">
  <tr>
   <td>
     <div id="controleGauche">
     </div>
   </td>
    <td>
      <select align="top" name="liste1" size="10" style="width:120px" multiple>
      <option value="1">Entree 1</option>
      <option value="2">Entree 2</option>
      <option value="3">Entree 3</option>
      <option value="4">Entree 4</option>
      <option value="5">Entree 5</option>
      <option value="6">Entree 6</option>
      <option value="7">Entree 7</option>
      <option value="8">Entree 8</option>
      <option value="9">Entree 9</option>
      <option value="10">Entree 10</option>
      <option value="11">Entree 11</option>
      <option value="12">Entree 12</option>
      <option value="13">Entree 13</option>
      <option value="14">Entree 14</option>
      <option value="15">Entree 15</option>
      <option value="16">Entree 16</option>
      <option value="17">Entree 17</option>
      <option value="18">Entree 18</option>
      <option value="19">Entree 19</option>
      <option value="20">Entree 20</option>
      <option value="21">Entree 21</option>
      <option value="22">Entree 22</option>
      <option value="23">Entree 23</option>
      </select>
    </td>
    <td>
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
           
     
          <td><div id="controlePrevious"></div></td>
        </tr>
        <tr>
           <td><div id="controleNext">
     </div>
         </td>
        </tr>
      </table>
    </td>
    <td>
      <select align="top" id="1" name="liste2" size="10" style="width:120px" multiple="yes">
      </select>
    </td>
   <td>
    <div id="controleDroit">
     </div>  
   </td>
  </tr>
  <tr>
    <td>
    </td>
    <td>
     <center>
     <div id="DeplaceDroit">
     </div>  
          </center>
    </td>
    <td>
    </td>
    <td>
     <center>
     <div id="DeplaceGauche">
     </div>  
     </center>
    </td>
    <td>
    </td>
  </tr>
</table>
 
<a href="javascript:selectionElementsListe(document.forms.formulaire.liste2,'true');" onClick=javascript:compteElem(document.forms.formulaire.liste2);>Valider</a>
<a href="#" onClick="window.close()">Fermer</a>  
   
</fieldset>  
</form></center>
 
 
Quand je clique sur l'hyperlien, qui a la fonction onClick, normalement il devrait me rediriger mais il ne se passe rien, il n'y a pas non plus d'erreur Javascript de créer, et sous Mozilla tout est nickel, saloperie d'IE !
 
Merci de votre aide !

Reply

Marsh Posté le 30-11-2005 à 10:02:51   

Reply

Marsh Posté le 30-11-2005 à 10:21:36    

Avant de blamer IE commence par coder proprement :o
Ce bout de code la c'est vraiment nawak:

Code :
  1. <a href="javascript:selectionElementsListe(document.forms.formulaire.liste2,'true');" onClick=javascript:compteElem(document.forms.formulaire.liste2);>Valider</a>


manque des quotes, et puis mieux vaudrait mieux mettre les actions dans le onclick...
 
ps: les messages d'alerte c'est mieux sans faute d'orthographe ;)


Message édité par anapajari le 30-11-2005 à 10:22:51
Reply

Marsh Posté le 30-11-2005 à 10:37:18    

Merci pour les fautes d'orthographe. ;-)
Donc j'ai enlevé les quotes, pour que ce soit plus propre, et enlver le "action".
Et j'ai refait ma fonction avec la gestion de action dedans comme ceci :
function compteElem(liste){
 var tab=0;
 for(i=0;i<liste.options.length+1;i++){
  tab = i;
 }  
 //alert ("Nombre d'element : "+tab);
 if ((tab<21)&&(tab!=0)){
  selectionElementsListe(document.forms.formulaire.liste2,'true');
  document.forms.formulaire.action = "SUPERVISIONalertes.pl";
  document.forms.formulaire.submit();
 }else{
  if (tab>20){
   alert("Vous avez sélectionné trop de portefeuilles, la limite est fixé à 20." );
  }else{
   if (tab==0){
    alert("Veuillez sélectionné au moins un portefeuille.Merci." );
   }
  }
 }
}
 
Il n' y a aucune différence... Merci de ton aide !

Reply

Marsh Posté le 30-11-2005 à 10:52:29    

C'est toujours nawak :)
Fallait pas enlever les quotes mais les mettre autour de ton onclick
 
Par ailleurs

Code :
  1. var tab=0;
  2. for(i=0;i<liste.options.length+1;i++){
  3.   tab = i;
  4. }


revient a faire

Code :
  1. tab = liste.options.length;


Message édité par anapajari le 30-11-2005 à 10:52:45
Reply

Marsh Posté le 30-11-2005 à 11:05:55    

J'ai réjouté les quotes comme tu m'as dis, j'obtiens ça :
<a href="javascript:selectionElementsListe(document.forms.formulaire.liste2,'true');" onClick="javascript:compteElem(document.forms.formulaire.liste2);">Valider</a>
<a href="#" onClick="window.close()">Fermer</a>  
   
</fieldset>  
</form>
C'est la fin de mon fichier HTML,
j'ai modifié ma valeur 'tab' ave ta ligne de code, et ça marche toujours sur Mozilla 1.5 et pas sur IE 6.0... :-(

Reply

Marsh Posté le 30-11-2005 à 11:07:53    

Code :
  1. var tab=0;
  2. for(i=0;i<liste.options.length+1;i++){
  3.   tab = i;
  4. }


 
Remplace ça par :

Code :
  1. var tab = liste.options.length;


 
Ensuite pour le test de tab, c'est plus joli de présenter comme suit (structure conditionnelle en peigne) :
 

Code :
  1. if (tab>20) {
  2.   alert("Vous avez sélectionné trop de portefeuilles, la limite est fixé à 20." );
  3.   return false;
  4. } else if (tab==0) {
  5.   alert("Veuillez sélectionné au moins un portefeuille.Merci." );
  6.   return false;
  7. } else {
  8.   selectionElementsListe(document.forms.formulaire.liste2,'true');
  9.   document.forms.formulaire.submit();
  10.   return true;
  11. }


 
Passons maintenant à l'utilisation de ta fonction :
 - le nom est mal choisi : le but n'est pas de compter le nombre d'éléments sélectionnés mais de vérifier que ce nombre est correct => verifSelection
 - On l'a dit et répété on ne doit pas mettre de javascript dans le href de <a>
 - Rappel sur onClick : si le code javasript dans onClick return false => href n'est pris en compte Cf. un post précedent
 - D'ailleurs, pourquoi utiliser un <a> ici, tu n'as qu'a mettre un <input type="submit"> et lancer la vérif en ajoutant un attribut onSubmit au <form>
 
En résumé :

Code :
  1. //Fonction qui compte le nombre d'elements de la liste
  2. function verifSelection(liste) {
  3. var tab = liste.options.length;
  4. if (tab>20) {
  5.   alert("Vous avez sélectionné trop de portefeuilles, la limite est fixé à 20.";
  6.   // bloquage de l'evenement => le formulaire ne sera pas lancé
  7.   return false;
  8. } else if (tab==0) {
  9.   alert("Veuillez sélectionné au moins un portefeuille.Merci.";
  10.   // bloquage de l'evenement => le formulaire ne sera pas lancé
  11.   return false;
  12. } else {
  13.   selectionElementsListe(document.forms.formulaire.liste2,'true';
  14.   // maintenant qu'on utilise onSubmit, il ne faut PAS le faire ici
  15.   // document.forms.formulaire.submit();
  16.   return true;
  17. }


 

Code :
  1. <form name="formulaire" ... onSubmit="return verifSelection(this.liste2);">
  2. ...
  3.   <input type="submit" value="Valider"/>
  4.   <input type="button" value="Fermer" onClick="window.close();"> <!-- bouton sans validation du formulaire -->
  5. ...


Message édité par Bidem le 30-11-2005 à 11:08:45
Reply

Marsh Posté le 30-11-2005 à 11:18:26    

Je te remercie de ton aide, et de tes idées.
Si j'utilise un lien c'est pour rester cohérent avec l'ensemble du projet. En effet, le mien s'intègre dans une ensemble, c'est pour cela que je veux garderles hyperliens. En tout cas merci, je vais essayer de retoucher ma fonction selectionElementsListe. Et la rajouter dans verifSelection.

Reply

Marsh Posté le 30-11-2005 à 11:29:46    

Donc ça marche, j'ai remplacé ma <a...></a>, par des <span></span>, je vais modifier le design de la souris et du lien au survol et c'est bon ! Merci de votre aide !

Reply

Sujets relatifs:

Leave a Replay

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