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 dynamique (modifiable par variables)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Par défaut Formulaire dynamique (modifiable par variables)
    Bonjour,

    je souhaite faire un formulaire dynamique qui ressemblerait à cela :

    lorsque l'on sélectionne Pomme : premiere image en pj


    lorsque l'on sélectionne Fraise : deuxième image en pj


    En gros, je veux cacher la case Bio lorsque je suis sur Fraise et l'afficher lorsque je suis sur Pomme.

    Comment faire cela en javascript?
    Merci!
    Images attachées Images attachées   

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Trop facile

    Alors déjà il faut que tu aies un id sur ton <select>, et un autre sur l’élément qui contient la case et le texte « bio ». Le fragment HTML pourrait ressembler à ça (sans les attributs name) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <select id="fruit">
    	<option value="Pommes">Pommes</option>
    	<option value="Fraises">Fraises</option>
    </select>
     
    <p id="bio">
    	<input id="case_bio" type="checkbox" />
    	<label for="case_bio">Bio</label>
    </p>
    Ensuite il faut surveiller les évènements qui surviennent sur le <select>. L’évènement change est tout indiqué, mais on oublie aussi souvent que l’utilisateur peut naviguer au clavier, et le clavier ne déclenche pas correctement change : on va donc surveiller également keyup.

    Je ne rentre pas dans les détails pour la façon de gérer les évènements. Je conseille toujours les gestionnaires d’évènements, mais c’est un peu long à expliquer, tu regarderas dans les tutoriels JS
    Sinon il reste les attributs onchange et onkeyup, mais c’est pas aussi bien…

    Il faut commencer par récupérer une référence sur les objets HTML qui nous intéressent. Ce bout de script doit s’exécuter une fois que les éléments sont chargés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // attention, je ne mets pas « var »,
    // ces variables seront donc globales
    $fruit = document.getElementById('fruit');
    $bio = document.getElementById('bio');
    Pour être sûr qu’ils sont chargés il y a diverses méthodes comme placer le script après dans le code HTML (déconseillé), ou surveiller l’évènement load de l’objet window (à la limite, l’attribut onload).

    Alors admettons que tu as réussi à attacher une fonction qui réagit au changement du <select>, et que cette fonction s’appelle changeFruit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function changeFruit() {
    	if ($fruit.value == 'Pommes') {
    		// affichage
    		$bio.style.display = 'block';
    	} else {
    		// masquage
    		$bio.style.display = 'none';
    	}
    }
    C’est tout !

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Par défaut
    Je n'arrive pas à tout compiler pour faire le code final...

    Je gère HTML/CSS/PHP/MySQL mais je n'ai pas de notion en javascript...

    J'ai tout de même essayer, mais je sèche

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Par défaut
    Je crois que c'est surtout le change et le keyup que je ne sais pas placer correctement.

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Dans ce cas-là, montrez-nous cette partie-là du code dans sa version HTML générée, pas le PhP (enfin... si vous arrivez jusque-là, sinon oui le code PhP pourra peut-être nous aider).

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Salut,
    une solution qui marche mais à éviter : les attributs HTML d’évènement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select id="fruit" onchange="changeFruit()" onkeyup="changeFruit()">
    	...
    </select>
    y’a la solution « DOM niveau 0 », un peu mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    window.onload = function() {
    	$fruit = document.getElementById('fruit');
    	$bio = document.getElementById('bio');
    	$fruit.onchange = changeFruit;
    	$fruit.onkeyup = changeFruit;
    }
    Et la solution gestionnaire d’évènement, la plus puissante car elle permet de séparer totalement le HTML et le script, et d’attacher autant de fonctions qu’on veut sur le même évènement du même objet (pas d’écrasement) ; cependant, tous les navigateurs ne gèrent pas la même syntaxe, ce qui complique les choses :
    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
    if (window.addEventListener) { // navigateurs standards
     
    	window.addEventListener('load', function() {
    		$fruit = document.getElementById('fruit');
    		$bio = document.getElementById('bio');
    		$fruit.addEventListener('change', changeFruit, false);
    		$fruit.addEventListener('keyup', changeFruit, false);
    	}, false);
     
    } else { // MSIE
     
    	window.attachEvent('onload', function() {
    		$fruit = document.getElementById('fruit');
    		$bio = document.getElementById('bio');
    		$fruit.attachEvent('onchange', changeFruit);
    		$fruit.attachEvent('onkeyup', changeFruit);
    	});
     
     
    };
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/03/2010, 14h01
  2. Envoi d'un formulaire dynamique html par mail
    Par Kxking dans le forum ASP
    Réponses: 2
    Dernier message: 11/09/2009, 10h16
  3. [AJAX] Formulaire dynamique - Récupération de variable
    Par Ben79 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/06/2007, 14h46
  4. Comment créer un site dynamiquement modifiable par le client ?
    Par freija dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 03/07/2006, 18h24

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