[JAVASRIPT] HELP ! Chargement page en fonction d'un test sur TEXTAREA

HELP ! Chargement page en fonction d'un test sur TEXTAREA [JAVASRIPT] - HTML/CSS - Programmation

Marsh Posté le 09-09-2009 à 23:43:45    

Bonjour,
 
Je m'arrache les cheveux depuis des heures sur un problème.  :pfff:  
Si vous pouviez m'aider, ça m'éviterait une nuit blanche...  :pt1cable:  
Je précise que je suis carrément novice en programmation...  :cry:  
 
Voilà, je souhaite charger une page en fonction d'une valeur entrée dans un champ TEXTAREA.
 
Aujourd'hui, ce code simplicime fonctionne :
 

Code :
  1. <script language="JavaScript">
  2. function ChangeUrl(frm)
  3.  {
  4.  var numero=document.frm.reprise.value;
  5.  var dest_ok = numero+".php";
  6. location.href = dest_ok;
  7. }
  8. </script>


 
Suivi dans le BODY de :
 

Code :
  1. <form name="frm">
  2. <INPUT TYPE="text" name="reprise" size="1" value="">
  3. <INPUT TYPE="button" value="Charger" onClick="ChangeUrl(frm)">
  4. </form>


 
Comme mes pages de destination ont des noms allant de 000.php à 514.php par exemple, j'aimerais épargner à l'utilisateur la contrainte de devoir tapper 007 s'il veut aller à la page 007.php. Aussi, je pensais simplement à faire un test genre :
 
SI numero < 10  
ALORS dest_ok = "00"+numero+".php"
SINON
SI numero < 100  
ALORS dest_ok = "0"+numero+".php"
SINON  
SI numero > 514
ALORS alert (Valeur trop élevée)
SINON
dest_ok = numero+".php"
 
Et là, je ne sais plus faire.
Le bouton "Charger" n'a aucune réaction dès que je tente le moindre test.
J'ai carrément l'impression que les chiffres entrés dans le TEXTAREA ne sont pas considérés comme des valeurs numérique, ce qui doit empêcher le bon fonctionnement du test.
 
Avez-vous un code solution ?

Reply

Marsh Posté le 09-09-2009 à 23:43:45   

Reply

Marsh Posté le 10-09-2009 à 00:55:18    

Salut  :hello:  
 
Attention, ce que tu utilises est un input text et non pas un textarea.
 
Pour ton problème, ton raisonnement tient la route. Cela vient sans doute d'une erreur de synthaxe.
Télécharger WebDeveloper (https://addons.mozilla.org/fr/firefox/addon/60).
C'est une barre génial pour coder du web.
Sur cette barre à droite, tu auras une petite icone verte qui sera rouge s'il y a des erreurs javascript. Clique dessus pour savoir exactement où elle est.
 
Fais nous part de tes observations.
 
A+  ;)

Reply

Marsh Posté le 10-09-2009 à 01:28:30    

Merci Pascal le nain pour le conseil.
Je crois que la confusion entre TEXTAREA et INPUT TEXT que tu as relevé m'a mis la puce à l'oreille.
Ainsi, en consultant quelques tutos, je pense avoir trouvé un code qui fonctionne :
 

Code :
  1. <script language="JavaScript">
  2. function ChangeUrl(frm)
  3.  {
  4.  var numero=Number(document.frm.reprise.value);
  5. if (numero < 10) {
  6. var dest_ok = "00"+numero+".php";
  7. }
  8. else {
  9. if (numero <100) {
  10. var dest_ok = "0"+numero+".php";
  11. }
  12. else {
  13. var dest_ok = numero+".php";
  14. }
  15. }
  16. location.href = dest_ok;
  17. }
  18. </script>


 
Apparemment, il fallait forcer en Number le contenu de mon champ.
 
Merci encore pour le coup de pouce !  :love:

Reply

Marsh Posté le 10-09-2009 à 17:47:06    

Sinon, dans ton cas, plutôt que de contrôler les tranche de chiffres, j'aurai tendance à profité que la variable soit en string pour rajouter "00" devant numéro, puis de forcer à tronquer la chaine pour n'en garder que les 3 derniers caractère...
Comme ça, si on entre 70, on fini par avoir 0070, et si on garde que les 3 dernier carctère, on recupère bien 070...
Ensuite, vérifier que ce soit bien 3 numéro (via Regex pour se compliquer la vie ^^)), puis si c'est inférieur à 514, OK

 

Du style :

 
Code :
  1. <script language="JavaScript">
  2. function ChangeUrl(frm)
  3. {
  4. var numero = "00"+document.frm.reprise.value;
  5. numero.substr(-3);
  6.  
  7. if ((numero.match(new RegExp("^\d{3}$" ))) && (Number(numero)<514)){
  8.   location.href = numero+".php";
  9. }
  10. else {
  11.   alert("numero de page incorect" )
  12. }
  13. </script>

Message cité 1 fois
Message édité par abais le 10-09-2009 à 17:53:10

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 11-09-2009 à 11:40:17    

abais a écrit :

Sinon, dans ton cas, plutôt que de contrôler les tranche de chiffres, j'aurai tendance à profité que la variable soit en string pour rajouter "00" devant numéro, puis de forcer à tronquer la chaine pour n'en garder que les 3 derniers caractère..


Mauvais plan je dirais. J'ai aussi pensé à ça, mais 2 conditions sont bien plus efficaces que cette suite d'opérations  ;)
 
edit : quoique... il est vrai qu'avec cette solution là on évite de convertir les string en int... Je sais pas... Ca me semble équivalent...


Message édité par Pascal le nain le 11-09-2009 à 11:42:53
Reply

Marsh Posté le 11-09-2009 à 12:13:43    

C'est une solution qui me paraissait plus adapté .
 
Après je ne suis que graphiste sans prétention
J'ai mauvaiseuu réputation...
Quand je code, je ne dessineuu pas...
Je passe pour un je ne sais quoi...
...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 11-09-2009 à 22:10:46    

Tu ne fais pourtant de mal à personne...
En critiquant les programmeurs qui grognent...


Message édité par Pascal le nain le 11-09-2009 à 22:11:34
Reply

Marsh Posté le 12-09-2009 à 08:47:46    

Pascal le nain a écrit :

Salut  :hello:  
 
Attention, ce que tu utilises est un input text et non pas un textarea.
 
Pour ton problème, ton raisonnement tient la route. Cela vient sans doute d'une erreur de synthaxe.
Télécharger WebDeveloper (https://addons.mozilla.org/fr/firefox/addon/60).
C'est une barre génial pour coder du web.
Sur cette barre à droite, tu auras une petite icone verte qui sera rouge s'il y a des erreurs javascript. Clique dessus pour savoir exactement où elle est.
 
Fais nous part de tes observations.
 
A+  ;)


FIREBUG  :o  :o  :o  :o  :o  :o  :o  :o  :o  :o  :o


---------------
Blablaté par Harko
Reply

Marsh Posté le 12-09-2009 à 09:38:44    

Moi j'ai les deux :)

Reply

Sujets relatifs:

Leave a Replay

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