|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 210 ![]() |
Bonjour,
J'utilise l'autocomplete jquery ui. Je souhaite rendre possible la mise en évidence des caractères tapés (par du gras par ex), ceci dans la liste des items proposés. Par ex si je tape "ra", il me serait proposé : radin parade etc L'utilisation de preg_replace et d'une expression régulière semble convenir à la problématique : Code :
au lieu de colorer en rouge les caractères "ra". Voyez-vous les raisons de ce dysfonctionnement ? Merci. |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Salut,
la regex semble fonctionner ? Est-ce que tu colles pas un span dans un select, ce qui n'est pas possible ?
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 210 ![]() |
Merci de ta réponse. Le système d'autocompletion affiche les propositions dans une liste li avec un lien. Si je tape "ra", je vois, grâce à firebug, le mot "parade" dans la liste des propositions, comme ceci :
Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Je me demande si c'est pas ton mix preg_quote(), json_encode().
preg_quote() te transforme "<" en "\<" et donc en json ça devient de la chaîne de caractères. Tu devrais faire un var_dump() de $row['res'] dans le while histoire de situer le problème.
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 210 ![]() |
Ta suggestion me paraît pertinente. Étant donné que je suis obligé de conserver le json_encode(), comment est-il possible d'arriver au résultat escompté ? Merci encore.
EDIT : je n'avais pas lu ta dernière phrase relative au var_dump. Je teste et je poste un nouveau message. EDIT2 : si je tape "ra" (dans ma base j'ai le nom "frazetta"), le var_dump me retourne : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Bon, j'édite encore mon message mais non finalement le span devrait être interprété dans la sortie du var_dump(), ce qui veut dire que les < et > sont déjà encodés ce qui doit poser le problème. Si tu affiches la source de la sortie du var_dump() tu as déjà les < et > je pense ?
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#7 | ||||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 210 ![]() |
Merci de ton intérêt pour mon sujet. Si je tape "fraz" (pour "frazetta), la réponse figurant dans l'onglet XHR de firebug est la suivante :
Pour le var_dump($row['res']); Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Est-ce que tu as changé ton code entre temps car maintenant les < et > ne semblent plus convertis ?
Sur la page de json_encode() on peut voir que la fonction échappe les / ce qui semble être finalement le problème. Un solution à l'arrache si tu es en php < 5.4 : Code :
echo str_replace('\\/', '/', json_encode($return_arr)); Code :
echo json_encode($return_arr, JSON_UNESCAPED_SLASHES);
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#9 | ||||||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 210 ![]() |
Je n'ai pas changé mon code. Cette ligne :
Code :
Cette ligne : Code :
Comme je n'ai que PHP 5.3 (en local), j'ai essayé ton code avec str_replace. Mais malheureusement la réponse XHR visible dans firebug est toujours la même avec les échappements des " et du /. Par contre dans la liste des propositions de l'autocompletion, la proposition s'affiche ainsi : Code :
|
||||||
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Est-ce que tu peux mettre ta page ajax complète là où tu crées ton XHR et le morceau de code de la création de ton formulaire ? T'aurais pas un htmlspecialchars() qui traîne quelque part ?
[Edit] Après vérification, je crois que le problème vient de JQuery il faudrait semble-t-il redéfinir le renderer si tu veux pouvoir mettre du HTML. http://bugs.jqueryui.com/ticket/5918 sinon la méthode autocomplete() de base semble convertir les caractères spéciaux par défaut en Javascript. Tu devrais créer un nouveau post sur le forum Javascript et/ou t"inspirer du code source de cette page : http://jqueryui.com/demos/autocomplete/custom-data.html
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
L'idée étant de redéfinir la méthode avec quelque chose de ce type :
Code :
__________________
Vive les roues en pierre |
||
|
|
10
|
|
|
#12 | ||
|
Membre du Club
![]() Inscription : janvier 2010 Messages : 210 ![]() |
Bonjour,
Merci infiniment Djakisback Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com