Erreur: ')' attendu [Résolu]

doubledu 9 Messages postés vendredi 7 mars 2008Date d'inscription 5 mai 2008 Dernière intervention - 3 avril 2008 à 17:41 - Dernière réponse : Axe971 75 Messages postés mardi 20 novembre 2007Date d'inscription 9 janvier 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

7 réponses

Axe971 75 Messages postés mardi 20 novembre 2007Date d'inscription 9 janvier 2009 Dernière intervention - 3 avril 2008 à 19:55
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Axe971
doubledu 9 Messages postés vendredi 7 mars 2008Date d'inscription 5 mai 2008 Dernière intervention - 4 avril 2008 à 15:29
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de doubledu
Axe971 75 Messages postés mardi 20 novembre 2007Date d'inscription 9 janvier 2009 Dernière intervention - 3 avril 2008 à 18:16
0
Utile
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,
Commenter la réponse de Axe971
Axe971 75 Messages postés mardi 20 novembre 2007Date d'inscription 9 janvier 2009 Dernière intervention - 3 avril 2008 à 18:22
0
Utile
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];
Commenter la réponse de Axe971
doubledu 9 Messages postés vendredi 7 mars 2008Date d'inscription 5 mai 2008 Dernière intervention - 3 avril 2008 à 19:29
0
Utile
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
Commenter la réponse de doubledu
doubledu 9 Messages postés vendredi 7 mars 2008Date d'inscription 5 mai 2008 Dernière intervention - 4 avril 2008 à 14:16
0
Utile
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");
}
Commenter la réponse de doubledu
Axe971 75 Messages postés mardi 20 novembre 2007Date d'inscription 9 janvier 2009 Dernière intervention - 5 avril 2008 à 00:58
0
Utile
De rien  c'est toujours un plaisir d'aider
Commenter la réponse de Axe971

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.