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

jQuery Discussion :

Attribut onChange() sur un select


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 63
    Points : 57
    Points
    57
    Par défaut Attribut onChange() sur un select
    Bonjour à toute la communauté,

    Voilà quel est mon soucis.

    Je trouve plein de codes pour afficher "une" div selon si on sélectionne une option dans le select mais ce n'est pas vraiment ce que je recherche.

    Je cherche plus à afficher différentes div selon les options choisies.

    Chaque option affichera une div différente avec un contenu différent.

    Je m'explique dans mon select j'ai plusieurs options :

    - Piller ce domaine
    - Assiéger ce domaine
    - Lancer un assaut sur ce domaine
    - Déplacer mes troupes sur ce domaine
    - Espionner ce domaine

    et selon l'option choisie, se ne sera pas le même cadre qui s'affichera en-dessous.

    Car les troupes à envoyer ne seront pas les mêmes donc j'aimerai avoir une solution à cela mais j'ai beau chercher, je ne trouve que des scripts qui affiche une seule div sur un changement avec donc, une seule fonction appelée.

    A moins qu'il soit possible de mettre une ID à chaque option et le onChange() sur chacune des options mais ne connaissant pas bien le jQuery et le JS, je préfère avoir les bonnes infos que d'y aller à taton pendant des heures ^^

    Merci de m'orienter vers une solution car là je cale un peu ^^

  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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    passe par une attribution / suppression de class sur tes divs
    avec une class visible et une class hidden

    sur le .change() du select en fonction du val() du select (ou data-sur le option:selected) tu attribues les bonnes class aux divs.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    val() = value de l'option j'imagine ?

    je préférerai partir sur un display:block ou un display:none plutôt que visibility.

    avec un effet de slide pour faire apparaître la div du dessous.

    cela-dit, je ne vois pas ce que tu veux dire par "Attribution / suppression" désolé j esuis une vraie bille mais j'essaye de comprendre le fonctionnement du JS en ce moment

    Aurais-tu un schema rapide d'exemple à me montrer stp ?

  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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    Parfait !!! merci ^^

    http://jsfiddle.net/rwoz672a/1/

    Maintenant j'ai une autre question qui a son importance...

    je passe par un système de champs select généré par jQuery et en fait il transforme automatiquement mes balises <options> en <ul><li><a href="#"></a></li></ul>

    Est-ce que cela peut empêcher le bon déroulement des opérations si j'ajoute ce code ?

  6. #6
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    ben vu que les balises li ou a n'ont pas de value ... pense à recupérer le value des options pour les passer en href des a ou en data- de tes li poru connaitre le div cible lors du click (du coup plus de onchange)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    ouais j'affiche une ancre alors en fait genre : #pillage du coup j'ai juste à faire ça en css avec un :target mais ça risque de ne pas fonctionner sous les anciens navigateurs...

    en fait ce qui est chiant c'est de pouvoir styliser un champs select mais de ne pas pouvoir lancer les attributs de base qu'on pourrait faire si y avait pas cette transformation des options en li a se serait quand plus simple...

    donc du coup je m'y prends comment pour arranger ça ?

    En bas de mon navigateur j'ai un lien qui apparaît quand je passe la souris sur l'option du genre :

    http://monsite/beta/game/pillage

    Ah oui et le problème est que je n'ai pas les balises <ul><li> dans mon code d'origine moi j'ai bien un select avec ses options...

    pour infos j'utilise snoupix ShinyForm voilà

    Donc quelle manipulation de dois effectuer pour afficher les div selon les li a cliqués vu que je ne les ai pas d'apparent sur mes codes ?

  8. #8
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    là j'ai pas mis le ul en forme ...
    mais les actions sont répercutées ...

    L'idée est de créer un ul et de le peupler avec des li en parcourant les options en leur attribuant les bone data-valeurs
    j'insère ensuite l'ul après le select et je masque le select

    je repercute les click sur les ul et selectionnant l'option correspondant puis en declenchant le change du select


    http://jsfiddle.net/rwoz672a/4/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    Houlà alors là on rentre dans le coeur du problème ... pour moi c'est de l'hebreu à mon niveau.

    En décomposant le fichier que j'ai voici la partie qui correspond au select :

    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
     
    if(b.is("select")){
    	b.wrap('<div class="shinyform_select shinyform"></div>');
    	b.hide();
    	var c=b.parent(".shinyform_select");
    	c.addClass(b.attr("class"));
    	c.append('<span class="shinyform_select_name"></span><span class="shinyform_select_button"></span>');
    	var m=a(".shinyform_select_name",c),i=a(".shinyform_select_button, .shinyform_select_name",c),f=0,n=b.find("option").length;
    	if(1<n){
    		c.append('<ul class="shinyform_select_list"></ul>');
    		for(var g=a(".shinyform_select_list",c),e=0;e<n;e++)g.append('<li><a href="#'+b.find("option").eq(e).val()+'">'+b.find("option").eq(e).text()+"</a></li>"),b.find("option").eq(e).attr("selected")&&(f=e)
    	}
    	m.text(b.find("option").eq(f).text());
    	g.hide();
    	if(b.attr("disabled"))c.addClass("disabled");
    	else{
    		var p=function(){
    			c.hasClass("open")?(a(".shinyform_select").removeClass("open"),a(".shinyform_select_list").hide()):(a(".shinyform_select").removeClass("open"),a(".shinyform_select_list").hide(),c.addClass("open"),g.slideDown(100)
    		)};
    		c.hover(function(){
    			a(this).addClass("hover")
    		},
    		function(){
    			a(this).removeClass("hover")
    		});
    		i.mousedown(function(){
    			c.addClass("focus")
    		});
    		i.mouseup(function(){
    			c.removeClass("focus")
    		});
    		i.click(function(){
    			p()
    		});
    		g.find("a").click(function(){
    			f=g.find("a").index(a(this));
    			c.find("select option").eq(f).attr("selected","selected");
    			m.text(b.find("option").eq(f).text());
    			p();
    			return!1
    		});
    		a("body").click(function(){
    			a(".shinyform_select").removeClass("open");
    			a(".shinyform_select_list").hide()
    		});
    		i.click(function(a){
    			a.stopPropagation()
    		})
    	}
    }
    j'ai déjà ajouté un "#" dans le <a href> mais alors dans ce cas, puis-je ajouter la fonction: onClick dedans et comment nommer la variable par rapport à ma div à appeler ?

  10. #10
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    Bon j'ai trouvé une solution un peu crado mais qui fonctionne.

    à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(1<n){
    		c.append('<ul class="shinyform_select_list"></ul>');
    		for(var g=a(".shinyform_select_list",c),e=0;e<n;e++)g.append('<li><a href="#'+b.find("option").eq(e).val()+'">'+b.find("option").eq(e).text()+"</a></li>"),b.find("option").eq(e).attr("selected")&&(f=e)
    	}
    j el'ai modifié en ajoutant à la fin du <a> ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="show'+b.find("option").eq(e).val()+'();"
    et ensuite j'ai fais une function par nom... ce qui fait un peu fouilli mais voilà 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
     
    <script>
    function shownone() {
    		$('#assaut').hide(500);
    		$('#pillage').hide(500);
    		$('#siege').hide(500);
    		$('#espionnage').hide(500);
    		$('#deplacement').hide(500);
    	}
     
    	function showassaut() {
    		$('#assaut').slideDown();
    		$('#pillage').hide(500);
    		$('#siege').hide(500);
    		$('#espionnage').hide(500);
    		$('#deplacement').hide(500);
    	}
     
    	function showpillage() {
    		$('#pillage').slideDown();
    		$('#assaut').hide(500);
    		$('#siege').hide(500);
    		$('#espionnage').hide(500);
    		$('#deplacement').hide(500);
    	}
     
    	function showsiege() {
    		$('#siege').slideDown();
    		$('#assaut').hide(500);
    		$('#pillage').hide(500);
    		$('#espionnage').hide(500);
    		$('#deplacement').hide(500);
    	}
     
    	function showespionnage() {
    		$('#espionnage').slideDown();
    		$('#assaut').hide(500);
    		$('#pillage').hide(500);
    		$('#siege').hide(500);
    		$('#deplacement').hide(500);
    	}
     
    	function showdeplacement() {
    		$('#deplacement').slideDown();
    		$('#assaut').hide(500);
    		$('#pillage').hide(500);
    		$('#siege').hide(500);
    		$('#espionnage').hide(500);
    	}
    </script>
    voilà je sais pas si y a moyen de faire mieux mais là pour le moment ça fonctionne.

    je mets donc en résolu mais vous pouvez toujours ajouter des comments pour m'aider à améliorer ce dernier code ^^

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

Discussions similaires

  1. propriété onChange sur un select, pb sous IE7 !
    Par avogadro dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/02/2007, 15h46
  2. onchange sur un SELECT : passage de paramètre
    Par NikoBe dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/10/2006, 11h14
  3. 2 actions sur evenement onchange sur champ Select
    Par falz222 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2006, 20h59
  4. onChange sur un SELECT
    Par linar009 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/07/2006, 10h14
  5. [Onchange] sur checkbox selection ds une liste deroulante
    Par maxxou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2006, 00h17

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