IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Autocompletion et selection dans choix


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Points : 15
    Points
    15
    Par défaut [Résolu] Autocompletion et selection dans choix
    Bonjour.
    Je suis en train de réaliser un site où il faut s'inscrire.

    La première page, nommée 'index.php', comporte des fonctions javascript et jQuery, dont celles-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    function win(name)
    		{
    			$(document).ready(function() { 
    				$('#affichage').fadeIn('slow');
    				$('#affichage').load(name+'.php');
    			});
    		}
     
    function modif(name)
    		{
    			$(document).ready(function() { 
    				if (document.getElementById('modif_'+name).style.display=='none')
    					$('#modif_'+name).fadeIn('slow');
    				else
    					$('#modif_'+name).fadeOut('slow');
    			});
    		}
     
    		function valid_change(name)
    		{
    			$('#modif_'+name).fadeOut('slow');
    			if (document.getElementById('change_'+name).value)
    				$.post("change_compte.php", {"valeur": document.getElementById('change_'+name).value, "champ": name}, function(data) {
    					$('#compte_'+name).html(data);
    				});
    		}
     
    		function lookup(ville) 
    		{
    			if (ville.length == 0) 
    			{
    				$('#suggestions').hide();
    			} 
    			else 
    			{
    				$.post("func/rpc.php", {"queryString": ville}, function(data){
    					if (data.length >0) 
    					{
    						$('#suggestions').show();
    						$('#autoSuggestionsList').html(data);
    					}
    				});
    			}
    		}
     
    		function fill(valeur) 
    		{
    			$('#change_ville').val(valeur);
    			$('#suggestions').hide();
    		}
    Dans cette page 'index.php', il y a un lien qui, quand on clique, ouvre un div avec la fonction 'win'. Ici, on appelle une page (disons, par exemple, la page 'compte.php').

    Dans cette page 'compte.php', il y a le code suivant (j''ai effacé le superflu pour plus de lisibilité) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php echo "<table>
    <tr>
    						<td valign='top'><div align='right'><b>Ma ville :</b></div></td>
    						<td valign='top'><div id='compte_ville'>$r[ville]</div><br />
    							<div id='modif_ville' style='display: none'>
    								<input type='text' id='change_ville' class='cadre' size='12' maxlength='60' OnClick=\"this.value='';\" onkeyup=\"lookup(this.value);\" onblur=\"fill();\" />
    								<input type='button' value='ok' class='plein' OnClick=\"valid_change('ville')\"/><br />
    								<div class='suggestionsBox' id='suggestions' style='display: none;'>
    								<img src='img/upArrow.png' style='position: relative; top: -12px; left: 30px;' />
    								<div class='suggestionList' id='autoSuggestionsList'>
    									&nbsp;
    								</div>
    							</div>
    							</div>
    						</td>
    						<td valign='top'><a href=\"#\" OnClick=\"modif('ville')\">[MODIFIER]</a></td>
    					</tr>
    </table>";
    Quand on clique sur [MODIFIER], ça fait apparaître le champ "change_ville". Quand on commence à insérer des caractères de la ville, une liste de suggestions apparaît car je fais appel à la page rpc.php à chaque fois qu'un caractère est tapé :

    La page rcp.php est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
            $db = mysql_connect('blabla','blabla','blabla') or die ("erreur de connexion");
        mysql_select_db('blabla',$db) or die ("erreur de connexion base");
            
            if(!$db) 
            {
                    echo 'Erreur ! Impossible de se connecter à la base de données.';
            } 
            else 
            {
                    if(isset($_POST['queryString'])) 
                    {
                            $queryString = addslashes($_POST['queryString']);
                                            
                            if(strlen($queryString)>3) 
                            {
                                    $query_ville = mysql_query("SELECT * FROM codes_postaux WHERE ville LIKE '$queryString%' LIMIT 20");
                                    if($query_ville) 
                                    {
                                            while ($r_ville = mysql_fetch_array($query_ville)) 
                                            {
                                            echo "<li onClick=\"fill('".$r_ville[code_postal]." ".$r_ville[ville]."');\">".$r_ville[ville]." (".$r_ville[code_postal].")</li>";
                                    }
                                    } 
                                    else 
                                    {
                                            echo 'Erreur ! Il y a un problème avec la requête ...';
                                    }
                            } 
                            else {}
                    } 
                    else 
                    {
                            echo 'Vous ne pouvez pas avoir accès directement à ce script ...';
                    }
            }
    ?>
    Tout s'affiche bien mais le problème est que quand je clique sur la suggestion que je souhaite, ce qui appelle la fonction 'fill', la variable n'est pas reconnue et le champ 'change_ville' ne se complète pas ...

    J'ai beau chercher depuis des heures, je ne vois pas pourquoi ...

    Je sais que c'est bien compliqué quand on est étranger au code, mais si par hasard un expert passait par là, ça m'aiderait bien

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 105
    Points : 119
    Points
    119
    Par défaut
    Salut,

    as tu fait un alert dans la fonction fill pour voir la valeur et regardé ce que ton php te sortait en remplissant l'appel de fonction?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Bonjour. Oui, j'avais fait ça et ça m'avait affiché 'undefinided' ... Donc a priori, la variable ne passe pas mais je ne comprends pas pourquoi ...

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 105
    Points : 119
    Points
    119
    Par défaut
    Dans ton php rcp.php, le while pour $r_ville dans lequel tu génères "<li onClick=\"fill("... es tu sûr que l'attribut est bel et bien remplie?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Comment ça ? Je suis sûr que ça scanne bien la BDD vu que ça m'affiche bien les villes avec leur code postal.
    Maintenant, comment voir s'il y a bien "écrit" : "fill('33200 BORDEAUX');" par exemple ?

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 105
    Points : 119
    Points
    119
    Par défaut
    Ce ne sont que des suggestions, je ne suis pas devant ton script.

    Oui voila savoir s'il remplie bien l'appel de fonction "fill"; si tu es avec mozilla tu sélectionnes ta liste de villes, ou du moins cell qui est censée réagir quand tu cliques dessus, tu cliques droit, tu choisi "code source de la sélection" et tu regardes si les attributs sont bien dans l'appel.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2010
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    J'avais déjà essayé de faire cela avant de poster mon message, mais quand je clique sur le bouton droit, le champs s'efface ...

    EDIT : j'ai modifié le script pour voir si les variables sont bien mises et effectivement, tout passe ... il y a bien écrit : "fill('33000 BORDEAUX');" ... et là, quand je clique sur la ville, le champ ce remplit bien ! Il y avait juste un "onblur" de trop dans le champ que je voulais remplir ... !

    Merci de ton aide (indirecte) !

Discussions similaires

  1. Réponses: 10
    Dernier message: 17/02/2015, 10h34
  2. autocomplete avec select dans un autre champ
    Par eomer212 dans le forum jQuery
    Réponses: 8
    Dernier message: 24/04/2013, 19h03
  3. Option selected dans une liste à choix multiple
    Par Nooby dans le forum Langage
    Réponses: 2
    Dernier message: 21/07/2008, 15h59
  4. Réponses: 8
    Dernier message: 05/05/2004, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo