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 :

select choix multiple


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut select choix multiple
    Salut à tous, je sais que c'est de l'html mais, bien sur, je me range du côté de la récupération de saisie de l'utilisateur.

    Bref, voici mon problème :

    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
    51
    52
    53
    54
    55
    56
    57
     
     
    // javascript 
    function valider()
    {
    	var source_list = document.monform.ma_liste;
    	if (source_list.selectedIndex == -1)
    	{
    		alert("Veuillez faire au moins un choix!");
    		return 0;
    	}
    	else
    	{
    		var maliste = '';
    		var j=0;
    		for (var i=0; i<source_list.length; i++)
    		{
    			if (source_list.options[i].selected)
    			{
    				if (mylist.length == 0)
    				{
    					mylist = source_list.options[i].value;
    				}
    				else
    				{
    					mylist = mylist+ ',' + source_list.options[i].value;
    				}
    			}
    		}	
    		document.monform.mon_texte.value = mylist;
    		document.monform.submit();
    	}
    }
     
    </script>
     
     
    // PHP
     
    <?php
     
    echo '<form method="post" action="test.php" name="monform">';  
    	echo '<select name="ma_liste[]" size="5" multiple="MULTIPLE">';  
    		echo '<option value="0">Aucun</option>';
    		echo '<option value="1">Cosmetique</option>';
    		echo '<option value="2">Fonctionnel</option>';
    		echo '<option value="3">T&eacute;l&eacute;chargement</option>';
    		echo '<option value="4">Autre</option>';
    	echo '</select>';
    echo '<input type="hidden" name="mon_texte" size="30">';
    echo '<input type="submit" onClick="valider()" value="Valider mes choix">';
     
     
    if ( isset ( $_POST['ma_liste'] ) )
    {
    	print_r($_POST['ma_liste']);
    }
    J'aimerai pouvoir faire une sorte de "sélection", j'entends par là de ne pouvoir que sélectionner : soit Aucun, soit les choix restants (dans n'importe quel ordre) mais ne pas pouvoir sélectionner : Aucun et Fonctionnel par exemple

    Est ce que cela est possible merci

  2. #2
    Expert éminent

    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
    Par défaut
    Bonjour,
    si l'utilisateur ne doit pas pouvoir faire ces choix, le plus simple/logique est de ne pas les lui proposer ....

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    Dans mon select, j'ai une liste avec : Aucun, Fonctionnel etc...

    L'utilisateur est libre de choisir ce qu'il veut, sauf couplé Aucun et Fonctionnel ou Aucun avec les autres, ce qui tout à fait logique mais on est pas à l'abri d'une erreur de saisie :s

  4. #4
    Expert éminent

    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
    Par défaut
    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
    function valider()
    {
    	var source_list = document.monform.ma_liste;
    	if (source_list.selectedIndex == -1)
    	{
    		alert("Veuillez faire au moins un choix!");
    		return 0;
    	}
    	else
    	{
    		var maliste = '';
    		var j=0;
    		for (var i=0; i<source_list.length; i++)
    		{
    			if (source_list.options[i].selected)
    			{
    				if (mylist.length == 0)
    				{
    					mylist = source_list.options[i].value;
    				}
    				else
    				{
    					mylist = mylist+ ',' + source_list.options[i].value;
    				}
    			}
    		}	
                    if (mylist == "0,2") {
                        alert("Choix incompatibles !!");
                        return 0;
                    }
    		document.monform.mon_texte.value = mylist;
    		document.monform.submit();
    	}
    }
    EDIT : j'avais oublié le côté "multiple"
    RE-EDIT : adaptations "multiple" ...

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    Merci bien, mais je viens de tester mais, cela me prend en compte quand même les choix que j'ai fais (Aucun et Fonctionnel par exemple)

  6. #6
    Expert éminent

    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
    Par défaut
    Arff !!
    J'avais pas vu l'erreur classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo '<form method="post" action="test.php" name="monform" onsubmit="return valider()">';  
    	echo '<select name="ma_liste[]" size="5" multiple="MULTIPLE">';  
    		echo '<option value="0">Aucun</option>';
    		echo '<option value="1">Cosmetique</option>';
    		echo '<option value="2">Fonctionnel</option>';
    		echo '<option value="3">T&eacute;l&eacute;chargement</option>';
    		echo '<option value="4">Autre</option>';
    	echo '</select>';
    echo '<input type="hidden" name="mon_texte" size="30">';
    echo '<input type="submit" value="Valider mes choix">';
    Jamais de fonction de contrôle sur un bouton submit !
    Toujours dans le onsubmit du <form>

    A+

  7. #7
    Expert éminent

    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
    Par défaut
    ... du coup dans ta fonction valider(), il faut remplacer document.monform.submit(); par return true;

    A+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    EDIT : j'avais pas vu ton nouveau message, je teste et je te dis

    Une erreur ? Désolé, je ne m'y connais pas beaucoup en javascript mais pourtant j'utilise le contrôle de saisie sur le bouton valider et je n'ai jamais eu de problème.

    En testant, je n'ai toujours pas le contrôle attendu


    Merci beaucoup pour l'aide que tu me fournis !

  9. #9
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Nemesis007 Voir le message
    En testant, je n'ai toujours pas le contrôle attendu
    Encore un oubli de ma part
    cf. ci-dessus ...

    A+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Encore un oubli de ma part
    cf. ci-dessus ...
    Pas de problème

    Mais hélas, le code ne fonctionne toujours pas :

    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
    51
    52
    function valider()
    {
    	var source_list = document.monform.ma_liste;
    	if (source_list.selectedIndex == -1)
    	{
    		alert("Veuillez faire au moins un choix!");
    		return 0;
    	}
    	else
    	{
    		var mylist = '';
    		var j=0;
    		for (var i=0; i<source_list.length; i++)
    		{
    			if (source_list.options[i].selected)
    			{
    				if (mylist.length == 0)
    				{
    					mylist = source_list.options[i].value;
    				}
    				else
    				{
    					mylist = mylist+ ',' + source_list.options[i].value;
    				}
    			}
    		}	
    		if (mylist == "0,2") 
    		{
            	alert("Choix incompatibles !!");
                return 0;
            }
    
    			document.monform.mon_texte.value = mylist;
    			return true;
    		
    	}
    }
    
    </script>
    
    <?php
    echo '<form method="post" action="test.php" name="monform" onsubmit="return valider()">';  
    	echo '<select name="ma_liste[]" size="5" multiple="MULTIPLE">';  
    		echo '<option value="0">Aucun</option>';
    		echo '<option value="1">Cosmetique</option>';
    		echo '<option value="2">Fonctionnel</option>';
    		echo '<option value="3">T&eacute;l&eacute;chargement</option>';
    		echo '<option value="4">Autre</option>';
    	echo '</select>';
    echo '<input type="hidden" name="mon_texte" size="30">';
    echo '<input type="submit" value="Valider mes choix">';
    Il ne prend pas en compte la boucle en rouge
    Je ne comprend pas pourquoi si on met le controle sur le bouton valider, c'est une erreur ?

  11. #11
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Nemesis007 Voir le message
    Il ne prend pas en compte la boucle en rouge
    Ta constitution de myList fonctionnait avant ?
    Si tu fais un alert(mylist) avant mon ajout, ça affiche quoi ?

    Je ne comprend pas pourquoi si on met le controle sur le bouton valider, c'est une erreur ?
    D'une certaine manière oui (même si la syntaxe est correcte).
    C'est l'évènement onsubmit qui a ce rôle : lorsqu'il renvoie true, le submit est déclenché, lorsqu'il renvoie false, il est interrompu ...

    A+

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Ta constitution de myList fonctionnait avant ?
    Si tu fais un alert(mylist) avant mon ajout, ça affiche quoi ?
    Ca n'affiche rien, donc j'en déduis que le problème vient d'avant. Pourtant quand j'affiche les valeurs des index, ceux sont bien les bons.

    Edit : J'ai essayé de mettre des alert("coucou"); un peu partout et je remarque que le script n'est pas exécuté.

    Citation Envoyé par E.Bzz Voir le message
    D'une certaine manière oui (même si la syntaxe est correcte).
    C'est l'évènement onsubmit qui a ce rôle : lorsqu'il renvoie true, le submit est déclenché, lorsqu'il renvoie false, il est interrompu ...
    Merci pour ces précisions

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 229
    Par défaut
    J'ai trouvé l'erreur, elle provenait du "ma_liste[]" dans le select...

    Merci pour ton aide

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

Discussions similaires

  1. select choix multiple désélection
    Par seb76250 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 18/02/2011, 22h52
  2. Réponses: 2
    Dernier message: 12/12/2006, 11h07
  3. select à choix multiple
    Par tribaleur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 22/06/2006, 15h53
  4. Supprimer une option d'un select à choix multiple
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2005, 14h16
  5. pb de select avec size avec choix multiple
    Par La_picolle dans le forum ASP
    Réponses: 10
    Dernier message: 28/08/2003, 15h21

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