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

jQuery Discussion :

Autocomplete avec Highlight multi termes [UI]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut Autocomplete avec Highlight multi termes
    Bonjour,

    J’essaie d'utiliser l'autocompleteur de Jquery :

    • En Ajax
    • Possibilité de taper plusieurs mot séparé par des espaces (stringtokenizer coté serveur et un intersect entre les termes)
    • Avec un Highlight des termes dans la liste déroulante.


    Exemple du site Jquery de l'autocomplet avec regexp


    Mon problème est que si je tape un accent le match(/\w+/g) ne convient pas, et que si j'ai un accent dans ce que je remonte en Ajax, le Regexp ne fonctionne plus.


    Pouvez vous m'aider ?

    Merci beaucoup !

    Voici le code :

    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
    53
    54
    55
    56
    57
    58
    59
    $j('#id_auto').autocomplete({
    	source : function(request, response) {
    		$j.ajax({
    			url : urlAuto,
    			dataType : "json",
    			type : "POST",
    			data : {
    				sid : sid,
    				term : request.term
    			},
    			success : function(data) {
    				taille = data.liste.length;
    				if (taille) {
    					data.liste.push({
    						"information" : taille + " élément(s) sur un total de " + data.nombreTotal
    					})
    					response($j.map(data.liste, function(item) {
    						if (item.information) {
    							return {
    								label : item.information,
    								value : "",
    								info : true
    							}
    						} else {
    							term = $j.ui.autocomplete.escapeRegex(request.term);
    							strRetour = (item.codeCim10 + " - " + item.libCim10Long);
    							listeTerme = term.match(/\w+/g);
    							for (var i = 0, j = listeTerme.length; i < j; i++) {
    								itemTerm = listeTerme[i];
    								strRetour = strRetour.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + itemTerm + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
    							};
    							return {
    								label : strRetour,
    								value : item.codeCim10,
    							}
    						}
    					}));
    				} else {
    					response([{
    						label : "Il n'y a aucun élément correspondant à votre recherche",
    						value : "val",
    						info : true
    					}]);
    				}
    			}
    		});
    	},
    	minLength : 2,
    	delay : 500,
    	select : function(event, ui) {
    		this.close
    	}
    }).data("autocomplete")._renderItem = function(ul, item) {
    	if (item.info) {
    		return $j("<li></li>").data("item.autocomplete", item).text(item.label).appendTo(ul);
    	} else {
    		return $j("<li></li>").data("item.autocomplete", item).append("<a>" + item.label + "</a>").appendTo(ul);
    	}
    };

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A part ajouter les caractères accentués dans ta RegExp, il n'y a pas vraiment de solution...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 212
    Par défaut
    Merci de ta réponse.


    En fait le RegExp de l'exemple ne correspond pas vraiment à mes besoins

    Tout ce que je veux faire c'est ajouter un <strong> autour des termes dans la liste déroulante mais sans se soucier de la CASE et des caractères accentués

    je rentre éèà, si j'ai eea dans le texte il me le met en strong
    je rentre eea, si j'ai éèà dans le texte il me le met en strong

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug avec un multi-fenetrage
    Par delfare dans le forum OpenGL
    Réponses: 4
    Dernier message: 30/08/2006, 09h23
  2. requete avec regroupement multi tables
    Par Fxg dans le forum Requêtes et SQL.
    Réponses: 21
    Dernier message: 26/07/2006, 21h53
  3. [script.aculo.us] Autocompletion avec DWR
    Par Kelem dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 28/06/2006, 09h22
  4. Programme international avec IHM multi-langues
    Par calogerogigante dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 26/04/2006, 00h49

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