Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
760 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Création d'une liste d'éléments liés à un id input

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création d'une liste d'éléments liés à un id input

n°2247376
gmalatet
Posté le 06-01-2015 à 07:05:45  profilanswer
 

Bonjour,
Après avoir passé des heures à essayer toutes les solutions que je connais et celles que je trouve sur les forums, je fais appel à tous les spécialistes de Hardware.
Je vous explique mon projet  (en PHP):

 

Je saisis une ville dans un champ input.
Une liste de villes correspondant à ma frappe se déroule en dessous de ce champs input.
Ensuite, quand je clique sur une ville de cette liste, elle doit s'inscrire dans le champ input.
Ca fonctionne, les éléments apparaissent bien comme des liens. Mais quand je clique dessus, mon champ input ne reçoit pas le nom de la ville.

 

Techniquement :
Mon formulaire simplifié  

Code :
  1. <form action="recherche.php" method="POST">
  2.     <th><input type="text" id="id_handler" name="ville" value="'.$oldville.'"  placeholder="entrer la ville'" onkeyup="vachercher();";onblur="this.value=this.value.toLowerCase();" style="text-transform:capitalize;" />';
  3.     echo '</th><tr /><td><div id="div_handler"></div></td>
  4. </form>
 

j'utilise XMLHttpRequest pour lancer la page PREAFF.php qui accède à la base de données et qui renvoit les éléments de la liste.
Dans cette page
- j'utilise un innerHTML qui affiche la liste.

Code :
  1. while ($res = mysql_fetch_row($retselect))
  2.                 {
  3.                 $VIlle = $res[0];
  4.                 $x="id_handler";
  5.                 // transforme chaque élément de la liste en lien pour ensuite transférer le contenu de la variable $VIlle dans le champs input.
  6.                 // $x est le handler défini par l'id de input
  7.                 $text.= '<a href="javascript:putininput('.$x.','.$VIlle.');">'.$VIlle.'</a><br>';    // bloody call qui ne fonctionne pas
  8.                 }
  9.             // affiche correctement les éléments de la liste
  10.             echo "var oDiv = document.getElementById('div_handler').innerHTML='".$text."';";


j'ai essayé d'autres solutions qui ne donnent rien comme :

Code :
  1. $text.= '<a onclick="javascript:putininput('.$x.','.$VIlle.');">'.$VIlle.'</a><br>';

 // ne fonctionne pas non plus
La fonction putininput se trouve dans la page de mon formulaire et se présente comme ça :

Code :
  1. function putininput(id,ville)
  2.     {
  3.     var _id = id;
  4.     var _ville = ville;
  5.     alert(_ville);
  6.     document.getElementById(id).value=_ville;
  7.     }
 

Quand on clique sur un élément lien de la liste, la fonction putininput ne répond pas.
Merci infiniment pour votre aide.

 


Message édité par gmalatet le 07-01-2015 à 02:18:21
mood
Publicité
Posté le 06-01-2015 à 07:05:45  profilanswer
 

n°2247565
gmalatet
Posté le 07-01-2015 à 11:53:19  profilanswer
 

Ca fonctionne maintenant en supprimant la fonction putininput() et en remplaçant l'appel par  

Code :
  1. $text.= '<a onclick=document.getElementById(\"'.$hang_id.'\" ).value="'.$VIlle.'">'.$VIlle.'</a><br>';


Le problème est que ça fonctionne pour les noms de ville simples mais ne fonctionne pas s'il y a des espaces dans le noms de ville composés.
 
Pouvez-vous m'aider ?

n°2247698
MaybeEijOr​Not
but someone at least
Posté le 07-01-2015 à 22:13:49  profilanswer
 

Bonjour,
 
 
Pour le premier problème, je pense que ça vient du innerHTML, en passant par du createElement ça devrait mieux se passer.
 
Pour le deuxième problème, difficile de répondre avec si peu d'éléments, il faudrait pouvoir voir le code en entier de chaque page. Surtout que là je ne comprends pas tout du côté de la requête ajax. Ce qui est récupéré c'est tout une chaîne javascript générée par la petite partie php qui nous ai proposée?

n°2247726
gmalatet
Posté le 08-01-2015 à 10:56:17  profilanswer
 

Bonjour,
 
Merci MaybeEijOrNot pour ton attention.
 
Le premier problème est réglé comme indiqué dans mon commentaire avec la solution indiquée.
 
Pour le second, je n'ai pas de solution, alors j'ai contourné le problème en remplaçant les espaces par des underscores. Pas très fun mais ça fonctionne.
 
Ca reste à creuser, néanmoins.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Création d'une liste d'éléments liés à un id input

 

Sujets relatifs
Affichage sous-listeFaire une liste extensible
Recuperer la classe des objets d une listeCréation de script avec lecture d'un fichier texte
Faire apparaitre les valeurs de la liste d'un combo/text box directemeAfficher/Masquer éléments DIV en javascript
Cherches liste de compétences de type Linked-inProjet de création d'entreprise de E-commerce
aide création SGBDBlocage caractere a-z A-Z Input
Plus de sujets relatifs à : Création d'une liste d'éléments liés à un id input


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR