[javascript] variable dynamique ?

variable dynamique ? [javascript] - HTML/CSS - Programmation

Marsh Posté le 26-05-2009 à 21:28:47    

Salut
 
je cherche à recuperer 7 resultats de mon formulaire php pour pouvoir les traiter en javascript, le nom des valeurs est : val1, val2 ...
 
voici ma fonction qui fonctionne pour une seul entrée :
 

Code :
  1. function check(form)
  2. {
  3. var msg = "";
  4.        if((parseFloat(form.val1.value) > 1)
  5.  {
  6.   msg += "saisie invalide\n";
  7.   alert(msg);
  8.   return(false);
  9.  }
  10. }


   
Je pensais à faire une boucle mais je vois pas comment incrémenter le nom de la variable :
 

Code :
  1. for (i=1; i<=7; i++)
  2. {
  3.  if((parseFloat(form.xxxx.value) > 1)
  4.  {
  5.   msg += "saisie invalide\n";
  6.   alert(msg);
  7.   return(false);
  8.  }
  9.     }

Reply

Marsh Posté le 26-05-2009 à 21:28:47   

Reply

Marsh Posté le 27-05-2009 à 00:57:01    

un truc comme ca :??:
 

Code :
  1. var fields = [ 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7'];
  2. for (var i = 0; i < fields.length; i++)
  3. {
  4.  if ((parseFloat (form[fields[i]].value) > 1)
  5.  {
  6.    alert ("Saisir invalide pour le champ " + fields[i]);
  7.    return false;
  8.  }
  9. }


 
[:_edit]
A noter qu'en JS 1.6 (Firefox 1.5+) on pourrait faire un truc dans ce style :  

Code :
  1. [ 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7'].forEach (function (v)
  2.     {
  3.         if (parseFloat (form[v].value) > 1)
  4.         {
  5.             alert ("Saisir invalide pour le champ " + v);
  6.             return false;
  7.         }
  8.     });


Message édité par SICKofitALL le 27-05-2009 à 01:00:40

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 27-05-2009 à 20:52:18    

merci ton premier exemple marche très bien, mais mon souci est que mtnt j'ai 28 variables :/
 
y'aurait-il un moyen de declarer les variables dans le tableau plus "proprement"
 
pcke faire :   var fields = [ 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7'] ca fait un peu long
 
a noter que mes variables ont pr nom  : val10, val11, val12, val13, val20, val21, val22, val23 ...
 
ce qui rend la tache un peu plus difficle, j'ai pensé à faire une double boucle mais je ne vois pas comment rentrer les infos dans le tableau
 

Code :
  1. for(var i = 1;i<8;i++)
  2. {
  3.     var p = i*10;
  4.     for(var j=p;j<p+4;j++)
  5.     {
  6.     var fields = "val"+j;  ????
  7.     }
  8. }


 
dsl si mes questions peuvent paraitre betes mais je ne fais pas svt de javascript  :bounce:

Message cité 1 fois
Message édité par obigit le 27-05-2009 à 20:58:55
Reply

Marsh Posté le 27-05-2009 à 21:04:10    

Tu peux faire quelque chose du genre
var fields = eval("val"+j)
 

Message cité 2 fois
Message édité par guybrush02 le 27-05-2009 à 21:04:50
Reply

Marsh Posté le 27-05-2009 à 21:46:23    

guybrush02 a écrit :

Tu peux faire quelque chose du genre
var fields = eval("val"+j)
 


 [:cerveau vomi]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-05-2009 à 21:53:35    

tu donnes un classe a tes champs, et tu en recupere la liste dynamiquement


---------------

Reply

Marsh Posté le 27-05-2009 à 22:05:25    

guybrush02 a écrit :

Tu peux faire quelque chose du genre
var fields = eval("val"+j)
 


 
ca ne marche pas  :cry:
 
meme en faisaint :

Code :
  1. var fields = j;alert(fields[0]);


 
il me sort : undefined


Message édité par obigit le 27-05-2009 à 22:08:26
Reply

Marsh Posté le 27-05-2009 à 22:15:36    

obigit a écrit :

merci ton premier exemple marche très bien, mais mon souci est que mtnt j'ai 28 variables :/
 
y'aurait-il un moyen de declarer les variables dans le tableau plus "proprement"
 
pcke faire :   var fields = [ 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7'] ca fait un peu long
 
a noter que mes variables ont pr nom  : val10, val11, val12, val13, val20, val21, val22, val23 ...
 
ce qui rend la tache un peu plus difficle, j'ai pensé à faire une double boucle mais je ne vois pas comment rentrer les infos dans le tableau
 

Code :
  1. for(var i = 1;i<8;i++)
  2. {
  3.     var p = i*10;
  4.     for(var j=p;j<p+4;j++)
  5.     {
  6.     var fields = "val"+j;  ????
  7.     }
  8. }


 
dsl si mes questions peuvent paraitre betes mais je ne fais pas svt de javascript  :bounce:


Code :
  1. var fields = [];
  2. for (var i = 1; i < 8; i++)
  3. {
  4.    var p = i * 10;
  5.    for (var j = p; j < p + 4; j++)
  6.    {
  7.      fields.push ("val" + j);
  8.    }
  9. }



---------------
We deserve everything that's coming...
Reply

Marsh Posté le 27-05-2009 à 22:15:55    

flo850 a écrit :

tu donnes un classe a tes champs, et tu en recupere la liste dynamiquement


[:plusun]


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 27-05-2009 à 22:22:26    


 
merci ca marche nickel  :jap:  
 
je regarde la doc pour voir comment faire des classes  :sweat:  

Reply

Marsh Posté le 27-05-2009 à 22:22:26   

Reply

Marsh Posté le 27-05-2009 à 22:35:34    

obigit a écrit :


 
merci ca marche nickel  :jap:  
 
je regarde la doc pour voir comment faire des classes  :sweat:  


Il parle d'une classe CSS que tu peux attribuer à tes élements, que tu peux récuperer avec des lib JS comme jQuery ou autre. Le résultat est alors directement placé dans un tableau que tu peux scruter avec une simple boucle.


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 27-05-2009 à 23:53:58    

merci pour ces précisions, je vais voir ça de plus près !

Reply

Sujets relatifs:

Leave a Replay

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