[Résolu] Pb dans mon code javascript

Pb dans mon code javascript [Résolu] - HTML/CSS - Programmation

Marsh Posté le 07-02-2005 à 09:35:19    

Bonjour à tous,
 
Je cherche à lier 2 listes déroulantes avec un input mais malheureusement cela ne marche pas
En effet, kan je clique sur le premiere liste cela ne donne aucune action javascript
Voici le code final après de longues heures de remuménage....

Code :
  1. <html>
  2. <HEAD>
  3. <TITLE>Traitement Salaire</TITLE>
  4. </HEAD>
  5. <center><H2>Traitement Salaire</H2></center>
  6. <SCRIPT LANGUAGE="JavaScript">
  7. function modifierListe()
  8. {
  9. if (document.getElementById)
  10. {
  11. alert('Vous venez de changer de salarie');
  12.  var maChaine = document.getElementById('salarie').value;
  13.       var maChaineEclatee = maChaine.split(";" );
  14.         for (var i=0; i<maChaineEclatee.length; i++)   
  15.      document.getElementById('heure_contra').value = maChaineEclatee[4];
  16.      if (maChaineEclatee[3] == 'CAF')
  17.      {
  18.              document.getElementById('activite').options[0].selected =1;
  19.      }
  20.      if (maChaineEclatee[3] == 'CPT')
  21.      {
  22.              document.getElementById('activite').options[1].selected =1;
  23.      }
  24.      if (maChaineEclatee[3] == 'CUI')
  25.      {
  26.              document.getElementById('activite').options[2].selected =1;
  27.      }
  28.      if (maChaineEclatee[3] == 'DIR')
  29.      {
  30.              document.getElementById('activite').options[3].selected =1;
  31.      }
  32.      if (maChaineEclatee[3] == 'ENT')
  33.      {
  34.              document.getElementById('activite').options[4].selected =1;
  35.      }
  36.      if (maChaineEclatee[3] == 'ETA')
  37.      {
  38.              document.getElementById('activite').options[5].selected =1;
  39.      }
  40.      if (maChaineEclatee[3] == 'REC')
  41.      {
  42.              document.getElementById('activite').options[6].selected =1;
  43.      }
  44.      if (maChaineEclatee[3] == 'SAL')
  45.      {
  46.              document.getElementById('activite').options[7].selected =1;
  47.      }
  48. }
  49. }
  50. </SCRIPT>
  51. <form name="form1" action="insertion.php" method="POST">
  52. <div align=center>
  53. <b>Choix du salari&eacute;</b>
  54. <input type='hidden' name='etablissement' value=CONT>
  55. <SELECT NAME='salarie' id='salarie' WIDTH=20 onChange='modifierListe(this.value)'><OPTION VALUE=nul>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</OPTION><OPTION VALUE='0327;BEGOC;ELISABETH;ETA;149.5'>BEGOC ELISABETH</OPTION>
  56. <OPTION VALUE='0322;BLEUZEN;NATHALIE;ETA;169.'>BLEUZEN NATHALIE</OPTION>
  57. <OPTION VALUE='0315;BOUCHER;SOLENE;ETA;169.'>BOUCHER SOLENE</OPTION>
  58. <OPTION VALUE='0551;BOUGUEN;KEVIN;SAL;1.'>BOUGUEN KEVIN</OPTION>
  59. </select>
  60. <b>Secteur d'activit&eacute;</b>
  61. <SELECT NAME='activite' id='activite'><option value='CAF'>CAFETERIE</option><option value='CPT'>COMPTABLE</option><option value='CUI'>CUISINE</option><option value='DIR'>DIRECTION</option><option value='ENT'>ENTRETIEN</option><option value='ETA'>ETAGE</option><option value='REC'>RECEPTION</option><option value='SAL'>SALLE</option></SELECT><br><br>
  62. <b>P&eacute;riode</b>
  63. <input type='text' name='date' size='5' maxlength='5' value='02/05'><b> (MM/AA)
  64. Heure contractuelle</b>
  65. <input type='text' name="heure_contra" size='8' maxlength='8' id="heure_contra">
  66. <b>Repas th&eacute;orique</b>
  67. <input type='text' name='repas_theo' size='2' maxlength='2'>
  68. <div align=center>
  69. <input type="reset" name="effacer" value="Effacer">
  70. <input type="submit" name="ok" value="Valider">
  71. </form>
  72. </div>
  73. </body>
  74. </html>


 
Merci pour toutes reponses ou toutes aides précieuses...


Message édité par kwa29 le 07-02-2005 à 15:21:29

---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 09:35:19   

Reply

Marsh Posté le 07-02-2005 à 10:01:58    

Beaucoup d'erreurs dans la syntaxe de ton code HTML et de ton code JavaScript :/

Reply

Marsh Posté le 07-02-2005 à 10:11:11    

On dirait que tu as tout tapé d'un jet puis tu a testé sans succès.  
 
Si je peux te donner un conseil, c'est de reprendre au départ et de tester que ton code fonctionne au fur et à mesure de la redaction.

Reply

Marsh Posté le 07-02-2005 à 10:12:19    

Et aussi de tout refaire aux normes, et d'utiliser des fonctions DOM dans ton javascript (donc genre document.getElementById, etc...)

Reply

Marsh Posté le 07-02-2005 à 10:31:20    

FlorentG kan tu dis beacoup d'erreur tu penses o kel ??
 
PS : un grand merci pour vos reponses c cool...


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 10:32:43    

Problèmes de syntaxe surtout, le HTML qui fait très 1995 :D Dans le javascript, je crois qu'il faut précéder les déclarations de variables par le mot clé 'var'

Reply

Marsh Posté le 07-02-2005 à 10:35:42    

En javascript je suis d'époque je crois...


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 10:42:48    

En Vrac :
 
 - l'appel à la fonction ModifierListe(-1) avec un parametre inutile (ex : le teste if(code_item =="ETA" ) ne retournera jamais true à moins que dans ton espace-temps -1 puisse être égal à "ETA" )
 
 - je ne vois pas comment le test if (document.form1.salarie.options[id].value == "ETA" ) pourrait retourner true vu que tes values sont plutot de la forme '0322;BLEUZEN;NATHALIE' ...
 
Conseil : reprends tout depuis bidut
 
background-image: url('includes/anael.bmp');
AAAARRRRGGHHHHH transforme-moi cette image en un autre format moins lourd

Reply

Marsh Posté le 07-02-2005 à 11:36:30    

Je l'ai complétement refais...


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 11:45:22    

Avec le alert('Voir' + salarie) j'arrive à avoir quelque chose de pas mal mais separé par des points virgules
genre : 0228;LOZACH;DAVID;REC;76.27
Dasn mon cas les champs 0228 LOZACH DAVID ne m'interesse pas par contre il REC donne le focus sur la deuxierme liste puis 76.27 se retrouve dans les champs heure_contra


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 11:45:22   

Reply

Marsh Posté le 07-02-2005 à 11:45:50    

Ok, ça commence à être un peu plus commestible [:petrus75]. La  message box s'affiche bien ? (donc le alert('Voir' + salarie)) ?

Reply

Marsh Posté le 07-02-2005 à 11:46:14    

Ok, cross-post

Reply

Marsh Posté le 07-02-2005 à 11:49:20    

yes alaise


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 11:50:05    

Par contre il faut que je dessoude ma chaine de caractere à savoir 0228;LOZACH;DAVID;REC;76.27 sauf que je le fais avec javascript direct ou en php ??


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 11:52:39    

T'en as besoin dans ton javascript ?

Reply

Marsh Posté le 07-02-2005 à 11:53:23    

En javascript ya ca :

Citation :


Chaine.substr(position1, longueur)  La méthode retourne une sous-chaîne commençant à l'index dont la position est donnée en argument et de la longueur donnée en paramètre.
 
Chaine.substring(position1, position2)  La méthode retourne la sous-chaîne (lettre ou groupe de lettres) comprise entre les positions 1 et 2 données en paramètre.


Message édité par kwa29 le 07-02-2005 à 11:53:40

---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 11:54:31    

Oui j'en ai besoin dans mon javascript


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 11:55:02    

Ah ben oui faut le faire en JS alors...

Reply

Marsh Posté le 07-02-2005 à 12:06:42    

kwa29 a écrit :

Par contre il faut que je dessoude ma chaine de caractere à savoir 0228;LOZACH;DAVID;REC;76.27 sauf que je le fais avec javascript direct ou en php ??


 
Pour ça il y a la fonction split()
 

Code :
  1. var maChaine = "0228;LOZACH;DAVID;REC;76.27";
  2. var maChaineEclatee = maChaine.split(";" );
  3. for (var i=0; i<maChaineEclatee.length; i++) {
  4.   alert(maChaineEclatee[i]);
  5. }

Reply

Marsh Posté le 07-02-2005 à 12:35:49    

Génial Merci bidem.
On approche de la fin et du resolut. Il ne me reste plu squ'a mettre le focus en seleted sur la 2eme liste et c fini
 
Je v pouvoir partir bouffer avec le ventre reposé hiihihi
 
PS : je mets à jour le script


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 14:20:18    

Afin de positionner la liste 2 sur la bonne value il faut faire un :
document.getElementById('secteur').value = maChaineEclatee[3];
 
mais comment mettre le sected dessus ??


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 14:21:11    

Tu boucles sur chaque option, et tu rajoute l'attribut selected quand t'as la bonne valeur

Reply

Marsh Posté le 07-02-2005 à 14:25:09    

genre  :  
if (choix == 1) {document.getElementById('secteur').selected}
if (choix == 2) {document.getElementById('secteur').selected}
...


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 14:29:33    

Fait plutôt une boucle pour chaque option dans le select, puis si la valeur est bonne, tu rajoutes l'attribut.
 
Fonctions utiles : getElementById(id), getElementsByTagName(tag), setAttribute(attribute, value)

Reply

Marsh Posté le 07-02-2005 à 15:02:07    

Dsl mais j'arrive pas à foutre le selected dessus, juste une ajout de champ
Mon code utilisé

Code :
  1. if (maChaineEclatee[3] == 'ETA')
  2.      {     document.getElementById('activite').options[0].text = "ETAGE";
  3. document.getElementById('activite').options[0].value = 0;
  4.      }


 
snif snif snif


Message édité par kwa29 le 07-02-2005 à 15:12:05

---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 15:17:27    

Utilise la méthode setAttribute ;) :

document.getElementById('activite').options[0].setAttribute('selected', 'selected');

Reply

Marsh Posté le 07-02-2005 à 15:19:12    

Merci Florent mais g reussit à le faire differement (encore mon vieux javascript en tete)
 
dis moi ce que tu en pense.. mais en tout cas je le tag comme résolut... Apres c de la customisation
Le script plus en haut est mis à jour


---------------
Visiter mon site http://kwa29.com
Reply

Marsh Posté le 07-02-2005 à 15:23:27    

Stocke au moins le document.getElementById('activite') dans une variable, ça sera un peu plus rapide ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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