.[ Javascript ] Je galère, un peu d'aide SVP!

.[ Javascript ] Je galère, un peu d'aide SVP! - Programmation

Marsh Posté le 20-08-2001 à 17:03:14    

Voilà mon script, il s'agit d'un formulaire qui demande des valeurs d'intervalles. Il faut donc vérifié que l'intervalle précédent existe et que la nouvelle valeur est supérieure mais y a plein de bug liés aux évènements à d'autres choses(1er intervalle 1-9 2ème:10 => erreur pour lui 10<9??)...
Je suis pas très fort en javascript, peut être que ça existe où que je me complique la vie, vous avez une idée?? MERCI
 
<html>
<head>
<script>
function chercheerreur(val,num){
   var text1;
   var text2;
   var textder;
   var numpre;
   if(val=='max'){
       if(eval("document.f1.min"+num+".value" )==''){
          return chercheerreur('min',num);
       }else{
          textder="document.f1.max"+num;
          return textder;
       }
   }else{
       if((val=='min') && (num-1>=1)){
           numpre=num-1;
           if(eval("document.f1.max"+numpre+".value" )==''){
              return chercheerreur('max',numpre);
           }else{
 
              textder="document.f1.min"+num;
              return textder;
           }
       }else{
           textder="document.f1.min"+num;
           return textder;
       }
   }
}
function verifieclick(val,num){
   var text1;
   var text2;
   var textder;
   var numpre;
   if(val=='max'){
      if(eval("document.f1.min"+num+".value" )==''){
           text1=eval("document.f1.min"+num);
           text2=eval("document.f1.max"+num);
           text2.value="";
           textder=chercheerreur(val,num);
           alert("Remplissez dans l'ordre les intervalles s'il vous plaît" );
           eval(textder+".focus()" );
      }
   }else{;
      if( (val=='min') && (num-1>=1)){
        numpre=num-1;
        if(eval("document.f1.max"+numpre+".value" )==''){
           text1=eval("document.f1.max"+numpre);
           text2=eval("document.f1.min"+num);
           text2.value="";
           textder=chercheerreur(val,num);
           alert("Remplissez dans l'ordre les intervalles s'il vous plaît" );
           eval(textder+".focus()" );
        }
      }
   }
}
function verifieblur(val,num){
   var text1;
   var text2;
   var numpre;
   if(val=='max'){
      if(eval("document.f1.min"+num+".value" )>eval("document.f1.max"+num+".value" )){
           text1=eval("document.f1.max"+num);
           text1.value="";
           alert("Valeur incorrecte" );
           text1.focus();
      }
   }else{;
      if( (val=='min') && (num>1)){
        numpre=num-1;
        if(eval("document.f1.max"+numpre+".value" )>eval("document.f1.min"+num+".value" )){
           text1=eval("document.f1.max"+numpre);
           text2=eval("document.f1.min"+num);
           text2.value="";
           alert("Valeur incorrecte" );
           text1.focus();
        }
      }
   }
}
</script>
</head>
<body>
<form name="f1" method="post" action="cartefinale.php">
Intervalle 1 <input type="text" name="min1" onfocus="verifieclick('min','1');" onblur="verifieblur('min','1');"> <input type"text" name="max1" onfocus="verifieclick('max','1');" onblur="verifieblur('max','1');"><br>
Intervalle 2 <input type="text" name="min2" onfocus="verifieclick('min','2');" onblur="verifieblur('min','2');"> <input type"text" name="max2" onfocus="verifieclick('max','2');" onblur="verifieblur('max','2');"><br>
Intervalle 3 <input type="text" name="min3" onfocus="verifieclick('min','3');" onblur="verifieblur('min','3');"> <input type"text" name="max3" onfocus="verifieclick('max','3');" onblur="verifieblur('max','3');"><br>
Intervalle 4 <input type="text" name="min4" onfocus="verifieclick('min','4');" onblur="verifieblur('min','4');"> <input type"text" name="max4" onfocus="verifieclick('max','4');" onblur="verifieblur('max','4');"><br>
Intervalle 5 <input type="text" name="min5" onfocus="verifieclick('min','5');" onblur="verifieblur('min','5');"> <input type"text" name="max5" onfocus="verifieclick('max','5');" onblur="verifieblur('max','5');"><br>
Intervalle 6 <input type="text" name="min6" onfocus="verifieclick('min','6');" onblur="verifieblur('min','6');"> <input type"text" name="max6" onfocus="verifieclick('max','6');" onblur="verifieblur('max','6');"><br>
</form>
</body>
</html>

Reply

Marsh Posté le 20-08-2001 à 17:03:14   

Reply

Marsh Posté le 20-08-2001 à 17:28:58    

c clair, y a un prob, il doit appeller des fonctions quand je m'y attend pas car il m'affiche plusieurs fois le même message des fois!
Sinon y a un prob:
 8-9  
 10-   =>erreur
 
 32-41
 109-  =>erreur
 
Peut être parce que à la ligne:
eval("document.f1.min"+num+".value" )>eval("document.f1.max"+num+".value)
le eval ne retourne pas un entier donc la comparaison merde??
Comment faire?
 
Dites moi surtout si c'est pas une bonne méthode de programmation ce script parce que c'est l'un des 1er que je fais en javascript!
 
MERCI

Reply

Marsh Posté le 20-08-2001 à 23:03:31    

Essaie ça, je sais pas si c'est ce que tu voulais faire  :??: , mais bon ...
 
<html>
<head>
<script>
 function cherche_le_bon(num)
 { var  testobj, i;
 
 
  for  (i = 1;  i <= 12; i++)
  { testobj = eval('document.f1.cel' + i);
 
   if  (testobj.value != '')  return testobj;
  }
 
  return  document.f1.cel1;
 }
 
 
 
 function verifieclick(obj, num)
 { var  prevobj, goodobj;
 
 
  if  (num == 1)  return;
 
  prevobj = eval('document.f1.cel' + (num-1));
 
  if  (prevobj.value == '')
  { alert("Remplissez dans l'ordre les intervalles s'il vous plaît" );
 
   goodobj = cherche_le_bon();
 
   goodobj.focus();
  }
 }
 
 
 function verifieblur(obj, num)
 { var  prevobj;
 
 
  if  (num == 1)  return;
 
  prevobj = eval('document.f1.cel' + (num-1));
 
  alert("prevobj : " + prevobj.value + '\n' + 'obj : ' + obj.value);
 
  if  (parseInt(prevobj.value) > parseInt(obj.value))
  { alert("Valeur incorrecte" );
 
   obj.focus();
  }
 }
</script>
</head>
<body>
<form name="f1" method="post" action="cartefinale.php">
Intervalle 1 <input type="text" name="cel1"  onfocus="verifieclick(this, 1);"  onblur="verifieblur(this, 1);">  <input type"text" name="cel2"  onfocus="verifieclick(this, 2);"  onblur="verifieblur(this, 2);"><br>
Intervalle 2 <input type="text" name="cel3"  onfocus="verifieclick(this, 3);"  onblur="verifieblur(this, 3);">  <input type"text" name="cel4"  onfocus="verifieclick(this, 4);"  onblur="verifieblur(this, 4);"><br>
Intervalle 3 <input type="text" name="cel5"  onfocus="verifieclick(this, 5);"  onblur="verifieblur(this, 5);">  <input type"text" name="cel6"  onfocus="verifieclick(this, 6);"  onblur="verifieblur(this, 6);"><br>
Intervalle 4 <input type="text" name="cel7"  onfocus="verifieclick(this, 7);"  onblur="verifieblur(this, 7);">  <input type"text" name="cel8"  onfocus="verifieclick(this, 8);"  onblur="verifieblur(this, 8);"><br>
Intervalle 5 <input type="text" name="cel9"  onfocus="verifieclick(this, 9);"  onblur="verifieblur(this, 9);">  <input type"text" name="cel10" onfocus="verifieclick(this, 10);" onblur="verifieblur(this, 10);"><br>
Intervalle 6 <input type="text" name="cel11" onfocus="verifieclick(this, 11);" onblur="verifieblur(this, 11);"> <input type"text" name="cel12" onfocus="verifieclick(this, 12);" onblur="verifieblur(this, 12);"><br>
</form>
</body>
</html>
 
Garde à l'esprit qu'un <input type="text"... c'est du texte !!!
J'ai renommé les <input> en séquence, ça permet de toujours avoir le max ou le min précédent en (num-1) sans avoir à tester si on a affaire à un min ou à un max, ça réduit le code  :)  
 
J'espère que ça t'aide.

Reply

Marsh Posté le 21-08-2001 à 10:58:58    

Merci beaucoup, c'est qympa, c'est plus clair et je connaissait pas tout cette syntaxe, merci encore merci :) :) :)

Reply

Sujets relatifs:

Leave a Replay

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