Erreur: ')' attendu

Résolu
doubledu Messages postés 9 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 5 mai 2008 - 3 avril 2008 à 17:41
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 - 5 avril 2008 à 00:58
Bonjour à tous,
Je suis debutant en javascript et voila mon probleme : Le code de mes fonctions javascripts ne s'execute pas dans tous les cas. Je m'explique, j'ai un formulaire avec un et lorsque j'appuie sur entrée ,lorsque le focus est sur ce champ, ma fonction javascript submit le formulaire qui envoie vers ma servlet. Celle ci rempli ma liste de "noms" situé dans ma base access et rempli la chaine "raison_sociale" où les mots sont séparés avec des virgules, puis je forward à nouveau ma page. C'est à ce moment là qu'apparait mon select avec la liste des noms a choisir. Lorsque je clic ou deplace la selection avec les touches haut et bas dans le select, ma fonction javascript "affraisonsoc" rempli le champ "raisonsociale" automatiquement.
Mon probleme est que lorsque je saisi "le" ou "lo" ou "a" dans le champ "noms" le select apparait correctement mais l'appel à mes fonctions javascripts associés aux evenements "onclick", "onfocus" et "onkeyup" à ce select ne fonctionne plus alors que n'importe qu'elle autre saisie met bien mon champ à jour c'est donc bien un probleme javascript

Appel de ma fonction "affraisonsoc" :
<

select size="8" onfocus="focusSelect();affraisonsoc('<%=raisonsoc %>');" onclick="focusSelect();affraisonsoc('<%=raisonsoc %>');" onkeyup="affraisonsoc('<%=raisonsoc %>');" name="selectNom" >

Ma fonction javascript :
function

affraisonsoc(raisonsoc){
var pos=ChoixAppel.selectNom.selectedIndex; //position dans le select
var temp="";
var mot=0; var index=0;
var car='';

for(i=0;i<raisonsoc.length;i++){
temp=temp+raisonsoc.charAt(i);
car=raisonsoc.charAt(i);
if(car==","){   //les mots sont séparés par des virgules
   if(pos==mot){
      if(mot==0){temp=temp.substring(index,i);}
      else{temp=temp.substring(index+1,i);}
         ChoixAppel.rais_socCherche.value=temp; //remplisssage du champ
         ChoixAppel.rais_socCherche.text=temp;
         j=raisonsoc.length;
      }
      mot++;
      index=i;
      }
   }
}

Erreur internet explorer :
Ligne : 94
Car : 192
Erreur: ')' attendu
Code : 0
URL : chemin apache

Lorsque j'execute sous internet explorer tout fonctionne sauf lorsque je tape certaines lettres
S'il vous plait, Si vous avez des idées sur la cause de ce probleme ou si vous voyez des erreurs dans mon code aidez moi.

7 réponses

Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
3 avril 2008 à 19:55
Bon je n'ai pas tout compris de ce que tu as expliqué... mais je te propose (vu que tu es obligé d'utiliser une chaine avec des <,> de la découper avec une fonction javascript pour obtenir un tableau.

Utilise la fonction split spécifique aux chaines de caractères
http://www.toutjavascript.com/reference/reference.php?ref=split&parent=15

Ca devrait déjà simplifier ta boucle...

Bonne chance
3
doubledu Messages postés 9 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 5 mai 2008
4 avril 2008 à 15:29
Erratum decidement les appel de fonction c'est mon fort
au lieu de :
<input type= "hidden" name="rais" value='<%=raisonsoc %> ' >
ou la chaine est delimitée par des apostrophes
mettre :

<
input type ="hidden" name="rais" value="<%=raisonsoc %>">
et voila la chaine est délimitée par des guillemets et mon chaine.split fonctionne.
Merci à Axe971
A bientot
3
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
3 avril 2008 à 18:16
Salut,

Ce serait bien d'indiquer quelle est la ligne qui correspond.
Et puis il serait mieux de faire un tableau contenant les raisons sociales, au lieu de te compliquer la vie à parcourir une chaine...

Bonne chance,
0
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
3 avril 2008 à 18:22
Pour compléter :

Le mieux serait de faire un tableau associatif. Exemple :

tabRaisonSociale["indice_dans_le_select"] = "Raison sociale correpondante";

...

tabRaisonSociale["indice1"] = "Raison sociale1";
tabRaisonSociale["indice2"] = "Raison sociale2";

Comme ça pour te simplifier la vie tu n'aurai qu'a faire :

var pos=ChoixAppel.selectNom.selectedIndex; //position dans le select
ChoixAppel.rais_socCherche.value=tabRaisonSociale[pos]; //remplisssage du champ
ChoixAppel.rais_socCherche.text=tabRaisonSociale[pos];
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
doubledu Messages postés 9 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 5 mai 2008
3 avril 2008 à 19:29
Salut Axe 971 et merci de me m'aider.

tu m'a demandé : "Ce serait bien d'indiquer quelle est la ligne qui correspond." mais internet explorer m'indique une ligne qui n'existe pas elle se trouve dans ma servlet mais celle ci ne comporte que 90 lignes.

Ton idée a propos des tableaux est interessante (je l'ai testé mais toujours pas d'evenement lors d'un clic ou autre) mais cela ne m'empeche pas parcourir ma chaine. Comme tu la surement remarqué je code en jsp et ma chaine raisonsoc change lors d'un retour de requete et je la passe donc en parametre lors de l'appel onkeyup="affraisonsoc('<%=raisonsoc %>');" je suis donc encore obligé d'utiliser le separateur "," pour "décomposer" la chaine. Je pourrais faire un tableau en amont au lieu de créer une chaine mais créer une chaine est la transmettre en parametre à ma fonction est la seule facon que j'ai trouvé pour faire cohabiter jsp, servlet et javascript.

D'apres moi l'erreur se situe vraiment dans cette boucle mais j'ai beau la retourner dans tous les sens je n'arrive pas voir la faute
0
doubledu Messages postés 9 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 5 mai 2008
4 avril 2008 à 14:16
Re bonjour Axe971 et merci pour tes precieux conseils
 Mon appplication va beaucoup plus vite maintenant le chaine.split fonctionnne vraiment tres bien.
J'ai résolu mon probleme!!  sa venait de mon appel dans ma fonction javascript
onkeyup="affraisonsoc('<%=raisonsoc %>');"
je l'ai remplacer par onkeyup="affraisonsoc();" et j'ai créé un champ caché avec la valeur de ma chaine
donc dans ma fonction javascript :
affraisonsoc(){
var raisonsoc = document.form.raisonsoc.value

//j'ai un autre souci à ce niveau ma chaine se tronque losqu'il y a le caractere ' exemple : maire d'avignon devient maire d et
//tout le reste de ma chaine est tronqué
var reg=new RegExp(";", "ig");
}
0
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
5 avril 2008 à 00:58
De rien  c'est toujours un plaisir d'aider
0
Rejoignez-nous