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 :

UI Autocomplete ,minLength:0 ,ne pas afficher la liste des suggestions si recherche vide


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 20
    Points : 24
    Points
    24
    Par défaut UI Autocomplete ,minLength:0 ,ne pas afficher la liste des suggestions si recherche vide
    Bonjour ,

    j'essaye de déclencher une action quand le champ input de l'autocomplete redevient vide
    l'utilisateur via l'autocomplete saisie un mot dans une base de données ce qui déclenche un traitement annexe

    Ensuite quand l'utilisateur coupe ou vide le champ de l'autocomplete je veux redéclencher ce traitement annexe

    Je suis donc parti sur cette idée ,

    je positionne minLength à 0 => minLength:0,
    dans l'option source : je place cette condition

    if(request.term=='' && tagFind!='') // si la requête de recherche est vide et que la dérnière recherche n'est pas vide
    //équivalent à
    if(request.term=='' && tagFind!=request.term)

    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
     
    $('#inpRec').autocomplete(
    		{
    	select:function(event,ui)
    		{
    		tagFind=ui.item.value;	  // tagFind est un des paramètres qui serviront au traitement annexe déclenchée par loadArts()
    		loadArts();
    		},
    	minLength:0,	 // à zéro
    	source:function(request,response){
     
    		if(request.term.trim()=='' && tagFind!='')
    			{
    			tagFind='';loadArts();
    			}
    		if (request.term in cache){
    			response(cache[request.term]);
    			return;
    		}
    		$.ajax({
    			url: "listTags2.php",
    			dataType:"json",
    			data:request,
    			success: function(data){
    				cache[request.term]=data;
    				response(data);
    			}
    		});
    	}
    	,close:function(){cache={};}
    });
    Et ça marche

    mais il y'a un autre problème

    en faisant ça je déclenche l'autocompletion à zero ,du coup quand le champ de recherche se retrouve vide cela me renvoi en suggestion tous les mots de la base de donnée ce qui fait que je me retrouve avec une liste de suggestion très longue

    pour désactiver ce comportement qui ici ne sert à rien j'ai rajouté cette condition

    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
     
    if(request.term.trim()!='')	   // condition rajoutée (si le champ de recherche n'est pas vide)
    	{
    	if (request.term in cache){
    		response(cache[request.term]);
    		return;
    		}
    	$.ajax({
    		url: "listTags2.php",
    		dataType:"json",
    		data:request,
    		success: function(data){
    			cache[request.term]=data;
    			response(data);
    			}
    		});	
    	}
    La aussi ça fonctionne ,

    la recherche des suggestions n'est pas éfféctuée , par contre la liste des suggestions précédentes reste toujours en place ainsi que le gif animé symbolisant le chargement des données

    exemple

    vo
    --------------------
    voiture
    voyage


    v
    --------------------
    valise
    vélo
    voiture
    voyage


    [champ vide] (*) <= symbole d'attente de chargement + liste des mots commençant par v (l'idéal étant une liste vide)
    --------------------
    valise
    vélo
    voiture
    voyage


    donc c'est pas mal de bidouillage ,j'ai épluché la doc (peut être mal) et je n'ai pas trouvé de solution à ce problème

    Merci donc pour vos conseils

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    J'ai trouvé ,


    Il suffit de renvoyer response('');

    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
     
    if(request.term.trim()!='')	   // condition rajoutée (si le champ de recherche n'est pas vide)
    	{
    	if (request.term in cache){
    		response(cache[request.term]);
    		return;
    		}
    	$.ajax({
    		url: "listTags2.php",
    		dataType:"json",
    		data:request,
    		success: function(data){
    			cache[request.term]=data;
    			response(data);
    			}
    		});	
    	}
    else
    	response('');	// ici

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

Discussions similaires

  1. Ne pas afficher les bordures des tableaux
    Par chlock62 dans le forum NetBeans
    Réponses: 3
    Dernier message: 31/03/2010, 14h48
  2. [PHP 5.3] Ne pas afficher les warnings des fonctions obsolètes
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2009, 14h59
  3. Réponses: 2
    Dernier message: 17/09/2009, 07h45
  4. Réponses: 2
    Dernier message: 22/10/2007, 12h10
  5. [TCD] : pas afficher les lignes des sous totaux
    Par hagen_71 dans le forum Excel
    Réponses: 1
    Dernier message: 09/10/2007, 14h03

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