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 :

Formulaire html Fetch API -> resultat sans afficher le formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Par défaut Formulaire html Fetch API -> resultat sans afficher le formulaire
    Bonjour à tous,

    j'espère que vous allez tous bien.

    Je me retrouve devant une problématique somme toute assez simple pour vous, j'imagine, mais voila plusieurs jours que je suis bloqué.

    J'ai un formulaire HTML qui me permet d'appeler une API avec la méthode FETCH de javascript.
    Je récupère et affiche bien les résultats.

    Sauf que j'aimerai ne plus afficher mon formulaire pour l'affichage des résultats.

    Exemple :
    Index.html:
    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
    <!doctype html>
    <html lang="fr">
    <head>
      <meta charset="utf-8">
      <title>Test recupe info API</title>
      <script src="script.js" defer></script>
    </head>
    <body>
     
    <h1>TEST</h1>
    <input type="text" id="champ">
    <button id="btn">GET VALEUR</button>
    <div id="output"></div>
    </body>
    </html>

    Mon script.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    btn.onclick=() => {
    	fetch("https://api.github.com/users/"+champ.value)
    	.then(reponse => reponse.json())
    	.then(data => {
    		output.textContent = "";
    		output.textContent = `compte de ${data.name}`;
     
    	}
    	)
     
    }
    Le problème est que le formulaire reste afficher.
    j'aimerai, en effet, que mon formulaire n'apparaisse plus et que mon <div id="output"></div> soit afficher à la place.

    Est ce possible ?

    Merci merci merci de votre aide je sèche grave.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Ce serait plus simple d'avoir un élément englobant ton <input> et ton <button> :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="input">
      <input type="text" id="champ">
      <button id="btn">GET VALEUR</button>
    </div>
    <div id="output"></div>

    Tu peux ainsi tout cacher d'un coup. Dans ton JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    btn.onclick = () => {
        fetch("https://api.github.com/users/"+champ.value)
            .then(reponse => reponse.json())
            .then(data => {
                document.getElementById("input").style.display = "none"; // Cache div#input
                output.textContent = `compte de ${data.name}`;
             });
     };

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Par défaut
    Super Seb !! Merci beaucoup ta méthode marche à merveille.

    Cependant, je vois que lorsque j'ajoute un formulaire avec la balise formcela ne fonctionne pas. Aurais-tu une idée pourquoi ?

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h1>TEST</h1>
    <div id="input">
      <form>
      <input type="text" id="champ">
      <button id="btn">GET VALEUR</button>
      </form>
    </div>
    <div id="output"></div>

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 315
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 315
    Billets dans le blog
    17
    Par défaut
    Avec ton <form> + ton <button> JS il risque d'arriver un truc, genre double-soumission.

    Plusieurs possibilités.

    1. Pour rester sur ce que tu as commencé, et pour éviter que le <button> ne fasse un submit du form, tu peux faire :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button id="btn" type="button">GET VALEUR</button>

    (par défaut tu as un type="submit")

    2. Mais le plus propre serait plutôt de faire de faire un onsubmit sur le form. Comme ça tu prends aussi en charge la pression sur ENTER pour déclencher la soumission.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tonForm.onsubmit = (event) => {
        event.preventDefault(); // Pour éviter la soumission
        // ... 
        // Ce que tu avais sur le onclick du button
    };
    À toi de jouer

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Par défaut
    T'es le meilleur !!! je t'embrasserai presque !

    Tout fonctionne à merveille !

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

Discussions similaires

  1. Balise <div> et html / clic menu et resultat dans page centrale
    Par d-85a dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/04/2009, 17h27
  2. Champ resultats dans un formulaire multicritere cafeine
    Par froutloops62 dans le forum IHM
    Réponses: 3
    Dernier message: 09/10/2007, 22h55
  3. Afficher le resultat dans la meme page que le formulaire
    Par info_plus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/07/2007, 10h17
  4. Resultat dans la meme page que le formulaire
    Par ChrisMan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/05/2007, 14h42
  5. Réponses: 7
    Dernier message: 23/03/2007, 00h11

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