Réaliser un champ de formulaire avec autocomplétion avec jQuery UI - commentaires Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2017-01-31T17:02:23Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment490848 2017-01-31T17:02:23Z <p>Et même une version amélioré qui permet de prendre en compte les lettres accentués.<br class="autobr"> Le filtre textebrut suffit, le json encode n'est pas nécessaire tant que tout est en utf8 mais il faut veiller à bien renvoyer les valeurs entre guillemets.</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET} #SET{collect,#ARRAY} <BOUCLE_collect_ag(EVENEMENTS){fusion lieu}> #SET{collect,#GET{collect}|push{#ARRAY{id,#ID_EVENEMENT,titre,#LIEU|textebrut}}} </BOUCLE_collect_ag> <BOUCLE_collect_rub(RUBRIQUES){fusion titre}> #SET{collect,#GET{collect}|push{#ARRAY{id,#ID_RUBRIQUE,titre,#TITRE|textebrut}}} </BOUCLE_collect_rub> <BOUCLE_collect_art(ARTICLES){fusion titre}> #SET{collect,#GET{collect}|push{#ARRAY{id,#ID_ARTICLE,titre,#TITRE|textebrut}}} </BOUCLE_collect_art> [<BOUCLE_res_collect(DATA){source tableau, #GET{collect}}{titre LIKE %#ENV{term}%}{par titre}{0,10}{","}>{"id":#VALEUR{id},"label":"#VALEUR{titre}","value":"#VALEUR{titre}"}</BOUCLE_res_collect>] #FILTRE{trim}</code></pre></div> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2017-01-31T16:31:12Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment490847 2017-01-31T16:31:12Z <p>J'ai pu trouver une solution grâce à l'aide du forum.<br class="autobr"> Pour ceux à qui cela pourrait être utile voici donc ma version du fichier <strong>autocomplete.html</strong> qui propose pour l'autocomplétion les titres d'articles, de rubriques et lieux d'événements.</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET} #SET{collect,#ARRAY} <BOUCLE_collect_ag(EVENEMENTS){fusion lieu}> #SET{collect,#GET{collect}|push{#ARRAY{id,#ID_EVENEMENT,titre,#LIEU|textebrut|json_encode}}} </BOUCLE_collect_ag> <BOUCLE_collect_rub(RUBRIQUES){fusion titre}> #SET{collect,#GET{collect}|push{#ARRAY{id,#ID_RUBRIQUE,titre,#TITRE|textebrut|json_encode}}} </BOUCLE_collect_rub> <BOUCLE_collect_art(ARTICLES){fusion titre}> #SET{collect,#GET{collect}|push{#ARRAY{id,#ID_ARTICLE,titre,#TITRE|textebrut|json_encode}}} </BOUCLE_collect_art> [<BOUCLE_res_collect(DATA){source tableau, #GET{collect}}{titre LIKE %#ENV{term}%}{par titre}{0,10}{","}>{"id":#VALEUR{id},"label":#VALEUR{titre},"value":#VALEUR{titre}}</BOUCLE_res_collect>] #FILTRE{trim}</code></pre></div> <p>Voir <a href="http://forum.spip.net/fr_266383.html#forum266420" class="spip_url spip_out auto" rel="nofollow external">http://forum.spip.net/fr_266383.html#forum266420</a></p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2017-01-29T01:41:41Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment490806 2017-01-29T01:41:41Z <p>Merci pour cette contrib.<br class="autobr"> Je souhaite pour ma part que l'autocomplétion propose les titres des articles, des rubriques ou les lieux des évènements de l'agenda.</p> <p>Pour ce faire, j'ai donc modifier l'autocomplete de cette manière en plaçant les séparateurs « , » virgule dans les parties conditionnelles des boucles.</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>]#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET} [<BOUCLE_artr(ARTICLES){titre LIKE %#ENV{term}%}{par titre}{","}{0,10}>{"id":#ID_ARTICLE,"label":[(#TITRE|textebrut|json_encode)],"value":[(#TITRE|textebrut|json_encode)]}</BOUCLE_artr>,</B_artr><B_rubr><BOUCLE_rubr(RUBRIQUES){titre LIKE %#ENV{term}%}{par titre}{0,10}{","}>{"id":#ID_RUBRIQUE,"label":[(#TITRE|textebrut|json_encode)],"value":[(#TITRE|textebrut|json_encode)]}</BOUCLE_rubr>,</B_rubr><B_lieuxr><BOUCLE_lieuxr(EVENEMENTS){lieu LIKE %#ENV{term}%}{fusion lieu}{","}>{"id":#ID_EVENEMENT,"label":[(#LIEU|textebrut|json_encode)],"value":[(#LIEU|textebrut|json_encode)]}</BOUCLE_lieuxr></code></pre></div> <p>Mais cela ne fonctionne pas et je comprends que ce qu'il me faudrait c'est que cela soit conditionné par le fait qu'il il y ai eu un résultat pour la boucle précédente. Il faudrait donc une sorte de condition 'si précédé de' pour ajouter alors seulement la virgule.</p> <p>Une idée pour gérer ça correctement<small class="fine d-inline"> </small>? Ça me parait simple mais je cherche sans trouver.</p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2015-06-01T12:33:43Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment482271 2015-06-01T12:33:43Z <p>Bonjour<br class="autobr"> Mon autocompletion est sensible à la casse. Effectivement en sql le critère LIKE rend la requête sur le champ titre par exemple sensible à la casse<br class="autobr"> en sql, on peut contourner en faisant UPPER(titre) like UPPER(term)<br class="autobr"> Mais comment faire de même avec les boucles spip<small class="fine d-inline"> </small>?</p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2015-02-05T10:51:50Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment479256 2015-02-05T10:51:50Z <p>Bonjour,</p> <p>Je remercie Tchariss pour sa remarque - merci également et bien sûr à erational - car l'ajout de la pipeline dans mes_options.php est effectivement la meilleure solution.</p> <p>En effet, l'ajout des bibliothèques / scripts directement dans le head ne suffisait pas : le sélecteur - et donc la position du menu des propositions - n'étant pas récupérée.</p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2015-02-02T10:13:12Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment479161 2015-02-02T10:13:12Z <p>J'ai aussi eu recours à cette syntaxe car l'encodage des apostrophes n'était pas correct, j'obtenais <code class="spip_code spip_code_inline" dir="ltr">aujourd'hui</code> au lieu du texte <code class="spip_code spip_code_inline" dir="ltr">aujourd'hui</code>.</p> <p>Est-ce normal, ou y'a-t-il un paramètre à préciser<small class="fine d-inline"> </small>?</p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2014-09-16T12:55:56Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment476969 2014-09-16T12:55:56Z <p>Est-ce que cela est fonctionnel en Spip 2.1<small class="fine d-inline"> </small>?</p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2014-06-06T09:31:58Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment475701 2014-06-06T09:31:58Z <p>Un article super pratique qui m'a bien dépanné, merci.<br class="autobr"> J'ai quand même des remarques sur 2 points :</p> <p>1) Dans le script activant l'autocomplétion, il vaut mieux utiliser la balise <code class="spip_code spip_code_inline" dir="ltr">#URL_PAGE{autocomplete}</code>.<br class="autobr"> J'ai d'abord utilisé l'url <code class="spip_code spip_code_inline" dir="ltr">spip.php?page=autocomplete</code> comme indiqué dans l'exemple, mais ça ne marchait pas : il manquait le «<small class="fine d-inline"> </small><code class="spip_code spip_code_inline" dir="ltr">../</code><small class="fine d-inline"> </small>» au début. Ca dépend peut-être des cas de figure, en tout cas avec la balise <code class="spip_code spip_code_inline" dir="ltr">#URL_PAGE</code> on est sûr d'avoir la bonne adresse.</p> <p>2) Pour charger les scripts jquery ui, il y a la pipeline <code class="spip_code spip_code_inline" dir="ltr">jqueryui_plugins</code> qui permet d'éviter de charger les scripts en doublons.<br class="autobr"> Dans <code class="spip_code spip_code_inline" dir="ltr">mes_options.php</code> :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>$GLOBALS['spip_pipeline']['jqueryui_plugins'] .= "|jqueryui_autocomplete"; function jqueryui_autocomplete($scripts){ $scripts[] = 'jquery.ui.autocomplete'; return $scripts; }</code></pre></div> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2014-04-23T20:25:25Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment475084 2014-04-23T20:25:25Z <p>J'ai trouvé comment résoudre le soucis :</p> <p>Dans autocomplete.html, avant d'encodre en json, j'applique un filtre textebrut :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>[(#REM) noisette ajax pour fournir une liste de mots l'autocompletion jQuery UI autocomplete parametre - term : lettre cherchee ]#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET} [<BOUCLE_mots(MOTS){titre LIKE %#ENV{term}%}{par titre}{","}{0,10}>{"id":#ID_MOT,"label":[(#TITRE|textebrut|json_encode)],"value":[(#TITRE|textebrut|json_encode)]}</BOUCLE_mots>]</code></pre></div> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2014-04-23T17:35:41Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment475083 2014-04-23T17:35:41Z <p>Ah finalement j'ai un léger soucis, je me retrouve avec des devant les : qui sont dans les titres des mots-clés listés par l'autocomplete…</p> <p>Une idée là-dessus<small class="fine d-inline"> </small>?</p> Réaliser un champ de formulaire avec autocomplétion avec jQuery UI 2014-04-23T16:41:23Z https://contrib.spip.net/Realiser-un-champ-de-formulaire-avec-autocompletion#comment475081 2014-04-23T16:41:23Z <p>Très bon merci<small class="fine d-inline"> </small>! J'utilisais le même mais avec une solution de base avec la doc JQuery, mais toute la liste des mots-clés s'affichait dans le code source des pages… Grâce à cette méthode, plus de soucis de ce genre.</p>