Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jquery - autocomplete

c'est quoi : function(event, ui) ?

Sujet résolu
    26 août 2018 à 16:35:21

    Bonjour,

    J'essaye de créer un code qui me permetterai (lors de mon clic sur l'item voulu de l'autocomplete) de prendre la deuxième partie (donc faire un split) et la mettre dans l'input suivant.

    Je vois partout ce " function(event, ui)" Que je ne comprend totalement mais alors pas du tout. Ou est l'event ? et le "ui" correspond a quoi ?, bref je ne comprend pas comment/quand le "function" se déclenche. et donc ne comprend pas ce "terme".

    Si vous voulez un exemple de ce que j'ai :

    Voici mon code JS/jquery :

    $(".ui-corner-all").click(function(){ var cp = $(this).text().split(' - '); setTimeout(function(){ console.log(cp[0]); console.log(cp[1]); console.log(cp); $("input[name^='cp_']").val(cp[0]); $("input[name^='ville_']").val(cp[1]); }, 250); })



    Ici : je selectionne celui que je veux (donc 86300 - chauvigny).

    Et j'obtiens ceci ensuite (console.log etc):

    En vous remerciant.

    Il y a peut etre des outils déjà préfait, je n'ai pas vraiment regarder (du coup d'où la question initiale avec ce function(event, ui). Je voulais surtout essayer de créer quelque chose par moi même et donc appronfondir mon savoir et savoir-faire en Js/Jquery.

    MERCI !

    EDIT : 

    J'ai changer pour mettre CECI (et donc essayer) :

    $("input[name^='cp_']").autocomplete({ 
       source: '../autocomplete/villes.php', 
       max: 10, 
       minLength: 3, 
       select: function( click, ui ) { 
           var cp = $(this).text().split(' - '); 
           setTimeout(function(){ console.log(cp[0]);
           console.log(cp[1]); 
           console.log(cp); 
           $("input[name^='cp_']").val(cp[0]); 
           $("input[name^='ville_']").val(cp[1]); 
           }, 250); 
       } 
    });




    et il me sort une chaine vide. 

    Voila ce que contient le console.log(cp) ===> [""]

    Du coup je ne comprend pas comment récuperer ce qu'il y a sur la premiere photo (donc lors de mon choix). Pour le split bien entendu et faire la suite...Merci 

    -
    Edité par AnthonyChevalier 27 août 2018 à 20:23:28

    • Partager sur Facebook
    • Partager sur Twitter
      28 août 2018 à 21:39:35

      Up
      Je vous remerci de votre aide
      • Partager sur Facebook
      • Partager sur Twitter
        29 août 2018 à 22:52:37

        bxdfr a écrit:

        rtfm..

        https://api.jqueryui.com/autocomplete/


        Justement c'est pour cela que je viens vous poser la question ... c'est parce que je ne comprend pas quoi mettre a la place de Event et Ui ... et a quoi ca correspond...

        Sinon je posterai pas, j'ai lu la doc mais rien n'est explicite. par rapport a ma question

        et d'ailleurs je vais te report parce que y'a un moment il faut reflechir avant d'etre injurieux comme cela. je pose une question legit , et je ne serait pas la si j'avais pas lu la doc.

        -
        Edité par AnthonyChevalier 29 août 2018 à 23:00:02

        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2018 à 9:39:22

          Bonjour,

          AnthonyChevalier a écrit:

          il faut reflechir avant d'etre injurieux comme cela. je pose une question legit , et je ne serait pas la si j'avais pas lu la doc

          RTFM n'est pas injurieux ... Cela fait simplement rappel à la documentation ... et même si la réponse de bxdfr est un peu trop directe, elle n'a rien d'injurieuse ...

          Le problème est qu'au départ tu poses une "question" qui fait référence au fonctionnement de base de JavaScript ... et sans expliquer ce que tu cherches à faire vraiment ... même si on peut peut-être le déduire ...

          Selon la documentation pointée par bxdfr, le widget Autocomplete de jQuery accepte un événement select, qui comme écrit dans la même documentation est déclenché "Triggered when an item is selected from the menu" (certes c'est en anglais, mais quand même) ...

          Toujours selon cette documentation, la fonction appelée lors du déclenchement de cet événement acceptera deux paramètres :

          • event, l'instance de l'événement en question
          • ui, un objet jQuery correspondant à l'élément cliqué avec label et value comme propriétés

          Tout est écrit dans la documentation et dans les exemples qui vont avec ...

          Donc ne chouine pas sur le ton de la réponse de bxdfr et remet un petit peu en cause ta façon d'apprendre et de rechercher ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            30 août 2018 à 11:25:24

            RTFM == read this f****** manual ---> désolé mais le mot en étoiles est clairement injurieux envers ma personne qui porte un sens a : "Mais lis la doc au lieu de poster comme un zouave car vous lisez jamais et vous êtes des ****. "
            Il y a la manière de le dire, du genre : as-tu lu la documentation en relation, si non je te propose de la lire beaucoup de chose dessus peuvent t'aider.
            par exemple.

            De plus j'ai relu, et parfois pour certain exemples je regarde un peu ce qu'ils ont fait, cependant en "copiant" la maniere ce qui a été fait pour comprendre ca ne fonctionne pas comme je l'aurais voulu.

            Je demandais ne ce serait-ce qu'une petite explication comme celle-ci pour essayer de comprendre un petit peu.
            C'était juste pour étayer ma compréhension pour comprendre le fonctionnement de celle-ci.

            • Partager sur Facebook
            • Partager sur Twitter
              30 août 2018 à 11:49:54

              Nous n'avons pas la même notion de l'injure ...

              Mais pour le coup, la documentation proposée dispose de toutes les informations répondant à ta "question" (et j'insiste sur les guillemets) de départ ... même si encore une fois tu ne nous avais pas expliqué clairement ce que tu souhaitais faire ...

              Après, j'attire ton attention sur le fait que, en posant une question de base sur un langage de programmation, tu ne trouveras pas souvent de personne incline à te faire une réponse détaillée comme je viens de le faire, mais plus probablement des personnes te renvoyant directement à la documentation comme l'a fait bxdfr ... c'est ici une communauté d'entraide, mais il faut faire ta part d'apprentissage et de travail et ne pas attendre de la communauté qu'elle te fasse un cours détaillé à chaque question posée ...

              Maintenant, ton problème est-il résolu ? Si non, merci de préciser ton besoin, ton code actuel, les erreurs éventuelles, et le résultat souhaité ...

              -
              Edité par Benzouye 30 août 2018 à 11:50:55

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                30 août 2018 à 22:58:12

                Il y a quand même une manière de le dire. Entre être indélicat comme la, et poser la question normalement.
                c'est un forum d'entraide, c'est sur. 

                sur ce j'essaye (je travail a coté du coup j'ai un peu moins de temps).

                • Partager sur Facebook
                • Partager sur Twitter
                  31 août 2018 à 8:50:58

                  Peux-tu préciser ce que tu cherches à faire exactement ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    31 août 2018 à 11:57:35

                    En gros : 

                    J'aimerais lorsque je clique sur donc l'item de liste (la ou il y a le code postal + le nom du village/ville) lorsque l'on tape le code postal .

                    Par exemple si je tape : 86300 j'aurais donc la liste (pour bien choisir quel ville lié a ce code postal).

                    Je choisi par exemple Chauvigny.

                    La seule chose qui sera retranscrit dans code postal serait la première partie (donc le code postal)

                    Et automatiquement grace au js/jquery la deuxieme partie ira directement dans le input Ville.

                    Je sais pas si c'est assez clair, parfois je m'exprime mal. Merci

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 septembre 2018 à 10:26:29

                      up , même si je suis passé a autre chose a coté en parallèle , j'aimerais arriver a trouver la solution !
                      Merci
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 septembre 2018 à 14:49:14

                        AnthonyChevalier a écrit:

                        Je choisi par exemple Chauvigny.

                        La seule chose qui sera retranscrit dans code postal serait la première partie (donc le code postal)

                        Et automatiquement grace au js/jquery la deuxieme partie ira directement dans le input Ville.

                        Voilà ce que je te propose :

                        <div>
                        	<label for="tags">Tags: </label>
                        	<input id="tags">
                        	<label for="cp">Code Postal : </label>
                        	<input id="cp">
                        	<label for="ville">Ville : </label>
                        	<input id="ville">
                        </div>
                        <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
                        <script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
                        <script type="text/javascript">
                        	window.onload=function(){
                        		var cps = [ '86300 - Bonnes', '86300 - Chauvigny', '86300 - Flex', '86310 - Toto', '86400 - Tutu' ]
                        		$( "#tags" ).autocomplete({
                        			source: cps,
                        			select: function( event, ui ) {
                        				let valeurs = ui.item.value.split(' - ');
                        				$('#cp').val( valeurs[0] );
                        				$('#ville').val( valeurs[1] );
                        			},
                        		});
                        	}
                        </script>

                        Dans la var cps j'ai mi le tableau des valeurs, je ne sais pas d'où cela provient chez toi ... Je donne ce tableau à l'attribut source de l'autocomplete.

                        Et j'utilise la méthode select pour récupérer la valeur choisie (ui.item), éclater le tiret et mettre les valeurs dans des inputs différents ...

                        Tu vois, rien de bien sorcier ...

                        -
                        Edité par Benzouye 5 septembre 2018 à 14:49:36

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                          6 septembre 2018 à 1:32:21

                          pour mon code postal + ville ===> C'est a partir d'une table dans ma base de donnée que j'ai recuperer

                          mais c'est pas ca qui va changer grand chose je pense

                          Et cela marche.

                          En tout cas j'ai compris, mon probleme réel était la concaténation de toute les choses utile dans ce select c'est a dire : ui.item.value.split

                          et du coup je faisait que : ui.item.val().split et je crois pas que ca ai marché , en tout cas ce qui n'avait pas été clair avant a été "clarifier" avec ton code , il me fallait plus un exemple concret que je n'avais pas trouvé auparavant =)
                          Merci, tu peux clore le post en tout cas !

                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 septembre 2018 à 9:14:59

                            AnthonyChevalier a écrit:

                            Merci, tu peux clore le post en tout cas !

                            Tu peux le passer à résolu avec le bouton "Sujet Résolu" en haut à droite du sujet ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                            Jquery - autocomplete

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown