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

Bibliothèques & Frameworks Discussion :

Autocompleter insensible aux accents [script.aculo.us]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 102
    Points : 77
    Points
    77
    Par défaut Autocompleter insensible aux accents
    Bonjour,

    J'utilise l' autocompleter local (sans AJAX)de scriptaculous.
    je souhaiterai le rendre insensible aux accents. Pour l'instant, je fait simplement un double des mots sans accents dans mon tableau de départ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var aListeProduits=new Array();
    aListeProduits.push('éléphant');
    aListeProduits.push('elephant');
    Cela fonctionne mais pose deux problèmes.
    1/ On voit la version sans accents dans les choix proposés.
    2/ Si on tape "éle", on a plus rien.

    donc voici mes questions :
    1/ Est-ce que scriptaculous a prévu le coup (rien vu dans la doc pour ça) ?
    2/ Est-ce que quelqu'un connait un moyen simple d'y parvenir (meme si je dois prendre un autre autocompleter) ?


    Voila...

    Merci d'avance

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    à mon avis faudra passer par une chaine temporaire ou tu auras remplacé les accents en passant par une regExp

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 102
    Points : 77
    Points
    77
    Par défaut
    Merci, je pensais à ça ausis..mais je vois pas bien comment l'utiliser avec le fonctionnement de scriptaculous. je pense que l'idéal serait de modifier directement la fonction de recherche de scriptaculous.

    Je vais regarder ça... mais le hic..quand on fait ça..c'est qu'il faudra que je retourne appliquer ma modification a chaque mise à jour de scriptaculous.

    Du coup je suis toujours preneur pour une autre piste ?

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    tu peux ajouter une fonction dans un fichier externe ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 102
    Points : 77
    Points
    77
    Par défaut
    Merci pour votre aide ..

    J'ai utiliser le code de base de scriptaculous pour reecrire une fonction selector personnalisée... cela fonctionne à merveille

    J'initialise le tableau de données avec deux colonnes, l'une avec accents l'autre sans accents.
    Lors de la recherche, je convertis la chaine recherchée en une version sans accent et je la compare à la version sans accent de mon tableau. Je continue cependant à afficher la version avec accents dans mon aide à la saisie.

    Vous trouverez ci-dessous le code que j'ai utilisé (si ça peut servir)

    HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //mon champ 
    <input type="text" autocomplete="off" id="addProduit" name="addProduit"  class="saisie" />
    JAVASCRIPT :
    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
    60
    61
     
    //exemple d'un tableau de donnees a faire passer avec deux colonnes [0]=le champs normal et [1]=version sans accents
    var aListeProduits=new Array();
    aListeProduits.push(Array('éléphant','elephant')); 
    aListeProduits.push(Array('été','ete'));
    aListeProduits.push(Array('table','table')); 
     
    //fonction de scriptaculous a appeler
    monSelector=function (instance) { //fonction de selection des resultat de l'autocompleter
     
            var ret       = []; // Beginning matches
            var partial   = []; // Inside matches
            var entry     = instance.getToken();
            var count     = 0;
     
            entry=noaccent(entry);
     
            for (var i = 0; i < instance.options.array.length &&
              ret.length < instance.options.choices ; i++) {
     
              var elem = instance.options.array[i][1];
    		   var elemDisplay = instance.options.array[i][0];
              var foundPos = instance.options.ignoreCase ?
                elem.toLowerCase().indexOf(entry.toLowerCase()) :
                elem.indexOf(entry);
     
              while (foundPos != -1) {
                if (foundPos == 0 && elem.length != entry.length) {
                  ret.push("<li><strong>" + elemDisplay.substr(0, entry.length) + "</strong>" +
                    elemDisplay.substr(entry.length) + "</li>");
                  break;
                } else if (entry.length >= instance.options.partialChars &&
                  instance.options.partialSearch && foundPos != -1) {
                  if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
                    partial.push("<li>" + elemDisplay.substr(0, foundPos) + "<strong>" +
                      elemDisplay.substr(foundPos, entry.length) + "</strong>" + elem.substr(
                      foundPos + entry.length) + "</li>");
                    break;
                  }
                }
     
                foundPos = instance.options.ignoreCase ?
                  elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
                  elem.indexOf(entry, foundPos + 1);
     
              }
            }
            if (partial.length)
              ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));
            return "<ul>" + ret.join('') + "</ul>";  
          }
     
    //fonction pour enlever les fonctions (ya surement mieux..)
    function noaccent(chaine) {
      temp = chaine.replace(/[àâä]/gi,"a")
      temp = temp.replace(/[éèêë]/gi,"e")
      temp = temp.replace(/[îï]/gi,"i")
      temp = temp.replace(/[ôö]/gi,"o")
      temp = temp.replace(/[ùûü]/gi,"u")
      return temp
    }
    INITIALISATION SCRIPTACULOUS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //initialisation de l'autocompleter sur le champ :
    new Autocompleter.Local('addProduit', 'listeproduits', aListeProduits,{selector:monSelector});

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

Discussions similaires

  1. Recherche insensible aux accents
    Par Warluck dans le forum Administration
    Réponses: 4
    Dernier message: 24/09/2013, 14h25
  2. Recherche insensible aux accents avec REGEXP
    Par khasyt dans le forum Requêtes
    Réponses: 7
    Dernier message: 10/08/2009, 03h17
  3. LIKE / insensible à la casse et aux accents
    Par Samish dans le forum Requêtes
    Réponses: 12
    Dernier message: 03/04/2009, 18h53
  4. Recherche insensible à la casse ET insensible aux accents.
    Par Bernard Grosdoy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/07/2005, 03h32
  5. [W3C] Police d'écriture insensible aux modifs
    Par Gribouille26 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/09/2004, 12h36

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