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

JavaScript Discussion :

Saisie semi automatique


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Saisie semi automatique
    salut a tous,

    je voudrais integrer a un utulitaire une saisie semi automatique de cette forme :

    si la valeur de mon champ texte contient moins de 4 resultats dans l'array nom ? alors : proposer les quatres noms correspondant au morceau de la saisie
    je ne sais pas si je me suis bien expliquer ?

    je tiens a dire que j'ai mené ma petite enquéte ( google... ) et rien, rien du tout nulle part.

    si quelqu'un peut me mettre sur la bonne voie sur le comment je dois proceder( avec deux trois explications ) merci.

  2. #2
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    Ton problème c'est de faire la saisie semi-automatique ?
    si oui va la :
    http://www.google.com/webhp?complete=1&hl=en

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Re: Saisie semi automatique
    Citation Envoyé par Necron
    je tiens a dire que j'ai mené ma petite enquéte ( google... ) et rien, rien du tout nulle part.
    sympa ta reponse !

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    voilà une idée

    http://javatwist.imingo.net/saisieauto3.htm

    regarde le code hein!

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut

    c'est exactement ca !
    je vais examiner ce code attentivement !
    et surtout essayer de le comprendre
    a+ et merci

  6. #6
    Inscrit
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Points : 273
    Points
    273
    Par défaut
    Ouah ! C'est génial....

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    bon, après quelques simplifications, ça devient peut-être plus lisible

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>sélection auto: le retour</title> 
     
    <style type="text/css">
    ul {border:1px solid;display:none;background-color:white;padding:0px;margin:0px;width:152px;list-style:none}
    li {width:150px}
    </style> 
     
    <script type="text/javascript"> 
     
    var tab=new Array(// tableau de valeurs à rechercher
    'un',
    'deux',
    'trois',
    'quatre',
    'cinq',
    'six',
    'sept',
    'huit',
    'neuf',
    'dix',
    'onze',
    'douze',
    'treize',
    'quatorze',
    'quinze',
    'seize',
    'dix-sept',
    'dix-huit',
    'dix-neuf',
    'vingt'
    ); 
     
    function go(alpha){ 
    var aff=document.getElementById('liste');
    var affiche=aff.getElementsByTagName('li');
     
    // à chaque caractère tapé, on vide la liste de résultats précédente
    while(aff.lastChild)aff.removeChild(aff.lastChild);
     
    // on supprime les accents pour comparaison
    for(i=0;i != tab.length;i++){  
    tab2=tab[i].replace(/[àâä]/gi,'a'); 
    tab2=tab2.replace(/[éèêë]/gi,'e'); 
    tab2=tab2.replace(/[ïî]/gi,'i'); 
    tab2=tab2.replace(/[ôö]/gi,'o'); 
    tab2=tab2.replace(/[ùüû]/gi,'u'); 
    alpha=alpha.replace(/[àâä]/gi,'a'); 
    alpha=alpha.replace(/[éèêë]/gi,'e'); 
    alpha=alpha.replace(/[ïî]/gi,'i'); 
    alpha=alpha.replace(/[ôö]/gi,'o'); 
    alpha=alpha.replace(/[ùüû]/gi,'u'); 
     
     
    // on supprime les majuscules et on cherche une correspondance
    if(tab2.toLowerCase().indexOf(alpha.toLowerCase())==0){ 
    if(alpha){
    // pour chaque correspondance, on crée un nouvel item dans la liste
    var el=document.createElement("li");
    var tx=document.createTextNode(tab[i]); 
    // en cliquant sur l'item, on transmet sa valeur et on "efface" la liste
    el.onclick=function(){document.getElementById('t').value=this.firstChild.data;aff.style.display='none'};
    el.appendChild(tx);aff.appendChild(el)}}
    };
     
    var total=affiche.length;// nombre de résultats trouvés
    if((total==0) || (total>=4)){// Si résultats = 0 ou > 3
    // création d'un item vide (conformité xhtml: pas de liste vide)
    var el=document.createElement("li"); 
    var tx=document.createTextNode(" "); 
    el.appendChild(tx);
    aff.style.display='none';// liste invisible
    aff.appendChild(el);}
    else aff.style.display='block';// sinon, on affiche les correspondances
     
    }
     
    </script>
     
    </head> 
     
    <body> 
     
    <div style="margin:50px">(Recherche des nombres de 1 à 20, écrits en toutes lettres.)</div>
     
    <form id="f" action=""> 
    <div>
    <input type="text" style="width:150px" id="t" onkeyup="go(this.value)" /> 
    <label for="t">Saisissez votre requête</label>
    <ul id="liste"style="display:none">
    <li> </li> 
    </ul> 
    </div>
    </form> 
     
     
    </body> 
    </html>

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 133
    Points : 59
    Points
    59
    Par défaut
    salut

    Est il ossible de pouvoir selectionner dans la liste sans avoir a cliquer avec la souris?
    je tape mon chiffre et je descend avec les flêches pour sélectionner l'item...
    Je vois pas du tout comment faire

    merci d'avance

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ah ouais intéressant ça!

    je verrai ça si j'ai un peu de temps ce week-end

    mais si tu trouves une idée te gêne pas pour la poster hein

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Sympa ce p'tit code
    Une petite modification permet d'utiliser plusieurs input avec le même tableau...

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>sélection auto</title> 
     
    <style type="text/css">
    ul {display:none;background-color:lightgrey;padding:0px;margin:0px;width:150px;list-style:none;cursor:pointer}
    li {width:150px}
    label {font-weight:bold;color:white}
    </style> 
     
    <script type="text/javascript"> 
     
    var tab=new Array(
    'un',
    'deux',
    'trois',
    'quatre',
    'cinq',
    'six',
    'sept',
    'huit',
    'neuf',
    'dix',
    'onze',
    'douze',
    'treize',
    'quatorze',
    'quinze',
    'seize',
    'dix-sept',
    'dix-huit',
    'dix-neuf',
    'vingt'
    ); 
     
     
    function go(n){ 
    var alpha=document.getElementById('input'+n).value;
    var aff=document.getElementById('liste'+n);
    var affiche=aff.getElementsByTagName('li');
     
    // à chaque caractère tapé, on vide la liste de résultats précédente
    while(aff.lastChild)aff.removeChild(aff.lastChild);
     
    // on supprime les accents pour comparaison
    for(i=0;i != tab.length;i++){  
    tab2=tab[i].replace(/[àâä]/gi,'a'); 
    tab2=tab2.replace(/[éèêë]/gi,'e'); 
    tab2=tab2.replace(/[ïî]/gi,'i'); 
    tab2=tab2.replace(/[ôö]/gi,'o'); 
    tab2=tab2.replace(/[ùüû]/gi,'u'); 
    alpha=alpha.replace(/[àâä]/gi,'a'); 
    alpha=alpha.replace(/[éèêë]/gi,'e'); 
    alpha=alpha.replace(/[ïî]/gi,'i'); 
    alpha=alpha.replace(/[ôö]/gi,'o'); 
    alpha=alpha.replace(/[ùüû]/gi,'u'); 
     
     
    // on supprime les majuscules et on cherche une correspondance
    if(tab2.toLowerCase().indexOf(alpha.toLowerCase())==0){ 
    if(alpha){
    // pour chaque correspondance, on crée un nouvel item dans la liste
    var el=document.createElement("li"); 
    var tx=document.createTextNode(tab[i]); 
    // en cliquant sur l'item, on donne sa valeur à la zone de texte et on efface la liste de sélection
    el.onclick=function(){document.getElementById('input'+n).value=this.firstChild.data;aff.style.display='none'};
    el.appendChild(tx); 
    aff.appendChild(el)};};
    };
     
     
    var total=affiche.length;// nombre de résultats trouvés
     
    if((total==0) || (total>=4)){// Si résultats = 0 ou > 3
    // création d'un item vide (conformité xhtml: pas de liste vide)
    var el=document.createElement("li"); 
    var tx=document.createTextNode(" "); 
    el.appendChild(tx);
    aff.style.display='none';// liste invisible
    aff.appendChild(el);}
    // sinon, on affiche les correspondances trouvées.
    else aff.style.display='block';
     
     
    }
     
    </script>
     
    </head> 
     
    <body> 
     
    Saisir des nombres de 1 a 20 en toutes lettres
     
     
    <form id="f" action=""> 
    <div>
    <input class="texte" type="text" style="width:150px" id="input1" onkeyup="go('1')" /> 
    <ul id="liste1" style="display:none">
    <li> </li> 
    </ul> 
    </div>
    <div>
    <input class="texte" type="text" style="width:150px" id="input2" onkeyup="go('2')" /> 
    <ul id="liste2" style="display:none">
    <li> </li> 
    </ul> 
    </div
    </form> 
     
     
    </body> 
    </html>

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

Discussions similaires

  1. Bloquer la saisie semi automatique du navigateur
    Par Oluha dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 01/02/2007, 22h53
  2. [OnChange] [IE] saisie semi automatique
    Par hisy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/06/2006, 13h34
  3. Problème avec la saisie semi-automatique d'internet explorer
    Par haltabush dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 07/02/2006, 13h23
  4. Saisie semi-automatique
    Par kurul1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/01/2006, 08h20
  5. Liste déroulante en saisie semi automatique
    Par pier07 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/07/2005, 17h02

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