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 :

Lien dans un input


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut Lien dans un input
    Bonjour,

    J'ai un code pour rechercher un nom dans une liste à l'aide d'un input, qui fonctionne très bien j'aimerai lui apporter une modification.
    Suite à la recherche je voudrais cliquer sur lr nom pour ouvrir la page?

    Mon code
    Code html : 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
     
    <!DOCTYPE html>
    <html>
    <title>Recherche</title>
     
    <body>
     
    <div class="w3-container">
      <h2>Filtrer une Liste</h2>
      <p>Rechercher un nom dans le champ de saisie.</p>
     
      <input  type="text" placeholder="Chercher un noms..!" id="myInput" onkeyup="myFunction()">
     
      <ul  id="myUL">
        <li>Adele</li>
        <li>Agnes</li>
        <li>Bil</li>
        <li>Bob</li>
        <li>Calvin</li>
        <li>Christine</li>
        <li>Cindy</li>
    	<li>Max</li>
    	<li>Michelle</li>
    	<li>Maurice</li>
    	<li>Pierre</li>
    	<li>louis</li>
      </ul>
    </div>
     
    <script>
    function myFunction() {
        var input, filter, ul, li, a, i;
        input = document.getElementById("myInput");
        filter = input.value.toUpperCase();
        ul = document.getElementById("myUL");
        li = ul.getElementsByTagName("li");
        for (i = 0; i < li.length; i++) {
            if (li[i].innerHTML.toUpperCase().indexOf(filter) > -1) {
                li[i].style.display = "";
            } else {
                li[i].style.display = "none";
            }
        }
    }
    </script>
     
    </body>
    </html>

    Je vous remercie d'avance

    max

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...je voudrais cliquer sur le nom pour ouvrir la page?...
    A mon avis, c'est dans ta liste qu'il faut mettre les liens, non ?

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ul>
      <li><a href="...">Adele</a></li>
      <li><a href="...">Agnes</a></li>
    ...

    Sinon, je ne vois pas...
    Si : remplacer dynamiquement l'action du form ?
    ou faire un window.location.href

    Mais pour ça, il faut que les prénoms et les URL associés soient dans des array JavaScript, utilisables.

    "javascript auto-complete"

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut
    Bonjour jreaux62,

    Lorsque je recherche un nom, je rentre les premières lettres dans mon input il m'affiche la liste commençant par ces premières lettre et lorsque je trouve le nom approprier j'aimerais cliquer dessus pour ouvrir le lien.
    Je voudrais savoir je doit mettre le lien dans le code javascript ou dans les <li> genre <li><a href="#">Adele</a></li>

    Merci

    Max

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans la liste.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 629
    Par défaut
    Re,

    je viens de m’apercevoir qu'il y a un problème, quand je fait ma liste avec mes lien comme ceci

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      <ul  id="myUL">
        <li><a href="Adele.html">Adele</a></li>
        <li><a href="Agnes.html">Agnes</a></li>
        <li><a href="Billy.html">Billy</a></li>
        <li><a href="Bob.html">Bob</a></li>
        <li><a href="Calvin.html">Calvin</a></li>
        <li><a href="Christina.html">Christina</a></li>
        <li><a href="Cindy.html">Cindy</a></li>
       <li><a href="Max.html">Max</a></li>
       <li><a href="Michelle.html">Michelle</a></li>
       <li><a href="Maurice.html">Maurice</a></li>
      <li><a href="Pierre.html">Pierre</a></li>
      <li><a href="louis.html">louis</a></li>
      </ul>

    La recherche ne se fait plus??

    Max

  6. #6
    Invité
    Invité(e)
    Par défaut
    Normal.

    Il faut accéder au contenu du <a>, enfant du <li> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (li[i].childNodes[0].textContent.toUpperCase().indexOf(filter) > -1) {

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Un autre exemple (seul Adele a un url) :

    Code HTML : 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
    <div class="w3-container">
        <h2>Filtrer une Liste</h2>
        <p>Rechercher un nom dans le champ de saisie.</p>
        <label>
            Un nom :
        </label>
        <input type="text" id="myInput">
     
        <ul id="myUL">
            <li data-url="https://www.google.com">Adele</li>
            <li>Agnes</li>
            <li>Bil</li>
            <li>Bob</li>
            <li>Calvin</li>
            <li>Christine</li>
            <li>Cindy</li>
            <li>Max</li>
            <li>Michelle</li>
            <li>Maurice</li>
            <li>Pierre</li>
            <li>louis</li>
        </ul>
    </div>

    Code JavaScript : 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
    const
        elemInput = document.querySelector('#myInput'),
        elemUL = document.querySelector('#myUL'),
        elemsLI = elemUL.querySelectorAll('li');
     
    for (const elem of elemsLI) {
        elem.addEventListener('click', ev => {
            if (elem.dataset.url) {
                window.location.href = elem.dataset.url;
            }
        }, {
            capture: false,
            passive: true,
            once: false
        });
    }
     
    elemInput.addEventListener('keyup', ev => {
        let
            filter = elemInput.value.toUpperCase();
     
        for (const elem of elemsLI) {
            if (elem.innerHTML.toUpperCase().indexOf(filter) > -1) {
                elem.style.display = "";
            } else {
                elem.style.display = "none";
            }
        }
    }, {
        capture: false,
        passive: true,
        once: false
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Invité
    Invité(e)
    Par défaut
    @danielhagnoul
    OK, mais on perd la sémantique des liens <a>.
    Pas top pour l'accessibilité.

Discussions similaires

  1. Afficher une image dont le liens est dans un input
    Par parda3 dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2018, 09h59
  2. Lien php dans balise input
    Par dririze dans le forum Langage
    Réponses: 10
    Dernier message: 24/05/2011, 20h27
  3. Afficher image automatiquement a l'insertion lien dans un input
    Par Korben_Debile dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/10/2009, 22h08
  4. lien dans un tableau
    Par billoum dans le forum ASP
    Réponses: 5
    Dernier message: 04/05/2004, 13h51
  5. Verrouiller un lien dans une page
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 5
    Dernier message: 25/02/2003, 16h56

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