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 : repérer les doublons


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut Autocomplete : repérer les doublons
    Bonjour,

    J'utilise le code basique de l'autocomplete Jquery UI, combiné avec un code fourni par SpaceFrog permettant de détecter si un item a déjà été rapatrié dans la DIV log (qui affiche les choix sélectionnés). Vous pouvez tester en suivant ce lien :

    http://jsbin.com/osayuk/4/edit#javascript,html

    Bizarrement, la détection des doublons ne marche pas à tous les coups. Par exemple, si je clique successivement sur les items suivants :

    1) item "javascript" => rapatrié dans la DIV log (normal)
    2) puis de nouveau sur cet item => un doublon est détecté : l'alert s'affiche (normal)
    3) item "java" => rapatrié dans la DIV log (normal)
    4) puis de nouveau sur cet item => un doublon est détecté : l'alert s'affiche (normal)
    5) item "php" => rapatrié dans la DIV log (normal)
    6) item "java" => rapatrié dans la DIV log : anormal car un doublon aurait dû être détecté

    Voyez-vous une explication à ce fonctionnement erratique de la fonction anti-doublon ? Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var tabvals=new Array()
    			$("[id^='contrib_pos']").each(function(){
    			tabvals.push($(this).val())})
    			var fullLength=tabvals.length
    			var uniqueLength=$.unique(tabvals).length
     
    				if(fullLength != uniqueLength) {
     
    				alert ("ce contributeur est déjà sélectionné");
    				$('#log div:last').remove();
     
     
    				}
    tu devrais juste loguer ( console.log ) le contenu de tabvals pour comprendre ce qu'il se passe.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut
    J'ai suivi ton conseil, SpaceFrog, j'ai ajouté un console.log (tabvals) après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tabvals.push($(this).val())})
    nouveau lien : http://jsbin.com/osayuk/5/edit

    En faisant les mêmes tests que lors de mon 1er message, voici ce que la console affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ["JavaScript"] // l'item est rapatrié ok
     
    ["JavaScript", "JavaScript"] // un doublon est détecté : l'alert s'affiche (normal)
     
    ["JavaScript", "Java"] //l'item est rapatrié ok
     
    ["JavaScript", "Java", "Java"] // un doublon est détecté : l'alert s'affiche (normal)
     
    ["JavaScript", "Java", "PHP"] // l'item est rapatrié ok
     
    ["JavaScript", "Java", "PHP", "Java"]// rapatrié dans la DIV log : anormal car un doublon aurait dû être détecté
    Je ne comprends toujours pas pourquoi le doublon n'est pas détecté dans le dernier cas. Une idée ? Merci.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var uniqueLength=$.unique(tabvals).length
    tabval=$.unique(tabvals)
    ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut
    Si j'ai bien compris, j'ai donc ajouté dans le code, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tabval=$.unique(tabvals)
    nouveau lien : http://jsbin.com/osayuk/6/edit

    Toujours avec les mêmes tests, voici désormais ce qu'affiche la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ["JavaScript"] // l'item est rapatrié ok
     
    ["JavaScript"] // un doublon est détecté : l'alert s'affiche (normal)
     
    ["JavaScript", "Java"] //l'item est rapatrié ok
     
    ["JavaScript", "Java"] // un doublon est détecté : l'alert s'affiche (normal)
     
    ["JavaScript", "Java", "PHP"] //l'item est rapatrié ok
     
    ["JavaScript", "PHP", "Java"] // rapatrié dans la DIV log : anormal car un doublon aurait dû être détecté
    Le problème de détection subsiste malheureusement ... Une autre idée ? Merci encore.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben au lieu d'un test sur le length fait un test inArray()
    si la valeur est contenu dans l'array tu pushes pas, si elel en l'est pas tu pushes

    http://api.jquery.com/jQuery.inArray/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Comment supprimer les doublons
    Par djelloulc dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/09/2013, 14h30
  2. Repérer les doublons sous condition
    Par arckeo72 dans le forum Excel
    Réponses: 3
    Dernier message: 24/12/2010, 09h59
  3. Réponses: 2
    Dernier message: 28/06/2009, 10h03
  4. Comment trier un tableau, et repérer les doublon?
    Par danje dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 18h45
  5. tri a bulle sans les doublons
    Par comme de bien entendu dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 10/03/2003, 16h29

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