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 :

Gestion de listes non liées pour Internet Explorer


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Gestion de listes non liées pour Internet Explorer
    Bonjour,
    je vous expose mon problème:

    J'ai deux listes non liées dans un formulaire pour des raisons pratique.
    Mon but est de ne sélectionné qu'une seule valeur sur les deux listes présentes.

    voici ce que j'ai mis en place en javascript:

    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
    function sursubmit(selection)
    {
    	//la liste2 est selectionné  
    	//je déselectionne chaque élement de la  liste1   
    	if (selection=='liste1')
    	{
    		for (var i=0; i<document.formulaire.liste1.options.length; i++) 
    		{
    			document.formulaire.liste1.options[i].selected = false;
    		}
    	}
     
    	//la liste1 est selectionné  
    	//je déselectionne chaque élement de la  liste2  
    	if (selection=='liste2')
    	{
    		for (var i=0; i<document.formulaire.liste2.options.length; i++) 
    		{
    			document.formulaire.liste2.options[i].selected = false;
    		}
    	}
    }

    et ceux à quoi ressemble le formulaire:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form name="formulaire" method="POST" action="resu.asp">
     
    	<select name="liste1" size="10" id="liste1" onClick="sursubmit('liste2');">
    	...
    	</select>
     
    	<select name="liste2" size="10" id="liste2" onClick="sursubmit('liste1');">
    	...
    	</select>
     
    </form>

    Tout ceci fonctionne parfaitement sous Firefox,Opéra,Safari,Chrome...
    Mais pas sous Internet Explorer

    Auriez-vous une idée?
    Dernière modification par Invité ; 29/10/2008 à 12h25.

  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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    pourquoi pas juste modifier le selectedIndex de l'autre liste sur le onchange avec un test de selection ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    oui effectivement c'est possible cela me donne le script suivant:

    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
    function sursubmit(selection)
    {
    	if (selection=='liste1')
    	{
    		if (document.getElementById('liste1').selectedIndex>0)
    			document.getElementById('liste1').options[document.getElementById('liste1').selectedIndex].selected=false;
    	}
     
    	if (selection=='liste2')
    	{
    		if (document.getElementById('liste2').selectedIndex>0)
    			document.getElementById('liste2').options[document.getElementById('liste2').selectedIndex].selected=false;
    	}
    }

    mais mon problème reste identique:
    internet explorer ne me l'interprète toujours pas correctement, alors que tout les autres navigateurs le font...

  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 640
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    essaye selected = 0 ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    j'ai bien essayé, mais aucune amélioration...

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Damocles49 Voir le message
    internet explorer ne me l'interprète toujours pas correctement, alors que tout les autres navigateurs le font...
    N'est-ce pas à cause de la gestion des évènements qui est légèrement différente ?
    Pour IE (6 en tous cas), le onclick se déclenche avant que la nouvelle valeur soit prise en compte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select onclick="alert('clic:'+this.value);"  onchange="alert('change:'+this.value);">
    Essaye avec onchange au lieu de onclick ....

    EDIT : c'est évident, puisqu'il faut déjà cliquer une fois pour pouvoir choisir la nouvelle valeur

    A+

  7. #7
    Invité
    Invité(e)
    Par défaut
    j'ai essayé ceci :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form name="formulaire" method="POST" action="resu.asp">
     
    	<select name="liste1" size="10" id="liste1" onChange="sursubmit('liste2');">
    	...
    	</select>
     
    	<select name="liste2" size="10"  id="liste2" onChange="sursubmit('liste1');">
    	...
    	</select>
     
    </form>

    mais aucune amélioration.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (selection=='liste1')
    {
    if (document.getElementById('liste1').selectedIndex>0)
       document.getElementById('liste1').selectedIndex = -1;
    }


    A+

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Attention, si ta première ligne a une valeur il faut tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById('liste1').selectedIndex>=0)
    Sinon ça ne fonctionnera pas si la sélection est sur cette première ligne ...

    A+

  10. #10
    Invité
    Invité(e)
    Par défaut
    oui tu a raison pour le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById('liste1').selectedIndex>=0)
    merci.

    en revanche le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       document.getElementById('liste1').selectedIndex = -1;
    ne fonctionne pas.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Damocles49 Voir le message
    en revanche le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('liste1').selectedIndex = -1;
    ne fonctionne pas.


    Sous IE 6, si (testé)

    EDIT : ainsi que sous FF3 (testé à l'instant)

    A+

  12. #12
    Invité
    Invité(e)
    Par défaut
    Mea culpa, mea maxima culpa

    Je t'ai mal relu d'où mon erreur,
    Tu a raison cela fonctionne desormais sur Firefox 3, Opéra 9, Safari, Chrome
    ainsi que sur internet explorer 6 et 7.

    Donc voici un récapitulatif du résultat:

    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
    function sursubmit(selection)
    {
    	if (selection=='liste1')
    	{
    		if (document.getElementById('liste1').selectedIndex>=0)
    			document.getElementById('liste1').selectedIndex = -1;
    	}
     
    	if (selection=='liste2')
    	{
    		if (document.getElementById('liste2').selectedIndex>=0)
    			document.getElementById('liste2').selectedIndex = -1;
    	}
    }

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form name="formulaire" method="POST" action="resu.asp">
     
    	<select name="liste1" size="10" id="liste1" onClick="sursubmit('liste2');">
    	...
    	</select>
     
    	<select name="liste2" size="10"  id="liste2" onClick="sursubmit('liste1');">
    	...
    	</select>
     
    </form>

    ps: j'ai garder les onClick qui fonctionne ...

    Merci E.Bzz & SpaceFrog

    Aller un p'tit pour la peine !!!
    Dernière modification par Invité ; 29/10/2008 à 18h16.

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

Discussions similaires

  1. [Joomla!] Étoiles pour voter du composant Seyret non visibles sur Internet Explorer
    Par filiplarlibe dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 06/09/2009, 18h24
  2. [AJAX] compatibilité liste déroulante liée avec Internet Explorer IE
    Par pasc06 dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 09/12/2008, 19h16
  3. Faire un plugin pour internet explorer
    Par snyff dans le forum Windows
    Réponses: 2
    Dernier message: 11/05/2004, 19h18
  4. Créer un plug-in pour Internet Explorer
    Par giaco dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/06/2003, 18h12

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