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 MULTIPLE et désélection


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut SELECT MULTIPLE et désélection
    Bonjour tout le monde,

    Alors voici un petit kwak auquel je suis confronté.

    J'ai une liste de sélection multiple dans laquelle je permet à un utilisateur de sélectionner plusieurs catégories d'articles qu'il souhaite afficher.

    Voilà à quoi ça ressemble :



    Maintenant, lorsque l'utilisateur appuie sur le bouton "Réinitialiser tout les champs", les zones de textes se vident. J'aimerais également que les éléments sélectionnés dans la liste soient désélectionné (et une utopie serait également de ne plus afficher la valeur du filtre sans rechargement de préférence).

    Voilà, alors j'ai essayer ceci:
    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function clearInput(){
    document.forms["Catalogue"].elements["DesiStart"].value = "";
    document.forms["Catalogue"].elements["DesiStop"].value = "";
    document.forms["Catalogue"].elements["Catalogue__Fou"].value = "";
    document.forms["Catalogue"].elements["Filtre"].innerHTML = "";
     
    var selectbox = document.forms["Catalogue"].elements["Categorie"];
    for (var i = 0; i < selectbox.length; i++)
    {
    	selectbox.options[i].selected = false;
    }
    }
    Mais ça ne marche pas , et un petit coup de clavier serait donc le bien venu afin de me mettre sur la bonne voie.

    En vous remerciant pour l'aide accordée...

    Richard
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    JE viesn de tester ceci sous ffx et IE sans souci particulier
    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
    <script type="text/javascript">
    function bell(){
    var i=0
    while(document.forms['foo'].elements['bar'].options[i++]){
      document.forms['foo'].elements['bar'].options[i-1].selected=false
      }
      }
    </script>
    </head>
     
    <body>
    <form name='foo'>
    <select name="bar" multiple>
     <option>jhgjhg</option>
      <option>jhgjhg</option>
       <option>jhgjhg</option>
        <option>jhgjhg</option>
    </select>
    <input type="button" onclick='bell()' value="effacer" />
    </form>
    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
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Points : 8 873
    Points
    8 873
    Par défaut
    Bonjour,

    pourquoi ne pas faire un "reset" de votre form ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms["Catalogue"].reset();
    Pour la déselection, suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("Categorie").selectedIndex = -1;
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Bon,

    J'ai essayer la méthode de SpaceFrog, et je n'arrive pas à la faire fonctionner. (Je n'ai pas dit qu'elle ne marchait pas, juste que moi, je n'arrive pas à la faire fonctionner.)

    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var i=0
    while(document.forms['Catalogue'].elements['Categorie'].options[i++]){
      document.forms['Catalogue'].elements['Categorie'].options[i-1].selected=false
      }

    Pour la méthode de Arnaud F., le .reset sur le formulaire fonctionne, mais seulement lorsque celui-ci n'a pas encore été validé. Une fois que j'ai valider le formulaire, il ne reset pas la liste de sélection.

    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function clearInput(){
    	document.forms["Catalogue"].reset();
    	document.getElementById("filtre") = "";
    }

    pour la valeur filtre, ne vous en préoccuper pas, juste un test pour voir si je pouvais vider le contenu d'un span, marche pas, donc je vais peut-être le cacher, tout simplement

    Alors je sèche toujours, pourriez vous m'aider sioux plaie...

    Je me dit aussi que le code du formulaire pourrait être intéressant :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <form action="Catalogue.asp"  id="Catalogue" name="Catalogue" method="post">
    	<table border="0">
    		<tr>
    			<td class="Label" align="left">Désignation contenant:</td>
    			<td>
    				<input type="text" size="55" name="DesiStart" value="<%=DesiStart%>" />
    			</td>
    			<td class="Label" align="right">ou :</td>
    			<td>
    				<input type="text" size="55" name="DesiStop" value="<%=DesiStop%>" />
    			</td>
    		</tr>
    		<tr>
    			<td class="Label" align="left">Catégorie :</td>
    			<td>
    			<select name="Categorie" id="Categorie" Multiple="multiple" size="5" width="100%">
    				<% oCatalogue.call "Msg_Categories", Categories %>
    			</select>
    			</td>
    			<td colspan="2"><i>CTRL &nbsp;+ clic pour sélectionner plusieurs catégories.</i><br/>
    			<i>SHIFT + clic pour sélectionner plusieurs catégories successives.</i><br/><br/>
    			<u>Valeur du filtre:</u> <span id="Filtre"><%=Categories%></span>
    			</td>
    		</tr>
    		<tr>
    			<td class="Label" align="left">Fournisseur :</td>
    			<td><input type="text" size="30" name="Catalogue__Fou" value="<%=Fourn%>" />
    			<input type="button" value="..." class="ListButton" name="bFourn" onClick="selectFourn()" /></td>
     
    		</tr>
    		<tr><td>
    		<input class="ActionButton" type="submit" name="Filtering" value="Rechercher" /></td><td>
    		<input class="ActionButton" type="button" value="Réinitialiser les champs" onClick="clearInput()"/></td>
    		</tr>
    	</table>
    </form>

    Voilà, je pense que maintenant, tout est dit.

    Merci pour l'aide que vous pourrez encore m'accorder, car sérieusement, je ne vois absolument pas comment faire.
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  5. #5
    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 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Il se peut que tes éléments de form soient masqués par le tableau...
    les balises tables ne sont pas faites pour faire de la mise en page d'elements et encore moins d'elements de form ...

    un simple test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     alert(document.forms['Catalogue'].elements['Categorie'].options.length)
    te dira si tu arrives à mettre la main sur les elements du form ou non
    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 !

  6. #6
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    J'ai bien accès au élément de mon form se trouvant de le tableau, j'obtiens le nombre d'élément se trouvant dans ma liste (soit 31).

    Mais la liste ne se vide toujours pas :'(

    D'autres idées sont la bien venues...
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  7. #7
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Je viens de remarquer une chose, qui pourrait probablement être la cause de mes soucis.

    Le langage qui est utilisé derrière mon site est un langage peu connu (Dataflex). Je l'utilise afin de réaliser des requêtes pour l'affichage des données.

    Le contenu de la liste étant créé à partir d'information se trouvant dans la BD, je fais donc un appel VBScript qui lancera la requête au serveur de BD, me retournera la réponse, et enverra ensuite le tout au client au format HTML.

    Voici donc cet appel :
    Code VBSCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select name="Categorie" id="Categorie" Multiple="multiple" size="5" width="100%">
    	<% oCatalogue.call "Msg_Categories", Categories %>
    </select>

    Et lorsque je réaffiche la page, je refais appel à ce même script afin de recréer la liste des catégories (dans mon cas), et je passe également la liste des catégories choisies précédemment, afin de sélectionner celle dans la liste qui était sélectionnées avant validation du form.

    (Je me rends compte que c'est tordu, mais je ne saurais pas faire plus simple, désolé).

    Est ce que cet appel pourrait poser problème? Normalement non, car il génère simplement du code HTML.

    Je ne vois plus à ce niveau ci, trop loin pour moi tout ça.
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

  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
    Bonjour,
    Citation Envoyé par richard_sraing Voir le message
    pour la valeur filtre, ne vous en préoccuper pas, juste un test pour voir si je pouvais vider le contenu d'un span, marche pas, donc je vais peut-être le cacher, tout simplement
    La syntaxe que tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms["Catalogue"].elements["Filtre"].innerHTML = "";
    fait référence au name de l'élément et non à son id.
    Or tu n'a pas donné de name au <span> (ce qui est normal d'ailleurs, car ce n'est pas un élément de formulaire).
    Il faut que tu utilises la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("Filtre").innerHTML="";
    Du coup, de 2 choses l'une :
    • soit tu es sous IE et dans ce cas ta syntaxe aurait dû fonctionner
    • soit tu n'es pas sous IE et c'est peut être cette erreur qui plante ton code et empêche la déselection des lignes de ton <select>


    EDIT : j'avais pas vu le post précédent ...
    Citation Envoyé par richard_sraing Voir le message
    Est ce que cet appel pourrait poser problème? Normalement non, car il génère simplement du code HTML.
    Oui, mais tout dépend comment se code est pris en compte par le navigateur : il peut ne pas être reconnu dans le form, par exemple ...
    MAis comme le test proposé par SpaceFrog te donnait le bon nombre de lignes, ça semble être bon.

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Membre habitué Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Points : 182
    Points
    182
    Par défaut
    Bon, je vais commencer par m'excuser pour mon incompétence.

    Voilà ce que j'ai maintenant, et ça fonctionne très bien... ^^

    Code JAVASCRIPT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function clearInput(){
    	document.forms["Catalogue"].reset();
    	document.getElementById("Categorie").selectedIndex = -1;
    	document.getElementById("Filtre").style.visibility = 'hidden';
    }

    Par contre, j'ai l'impression de l'avoir fait toute à l'heure, et ça ne marchait pas.
    Concernant la remarque de E.Bzz, j'ai fait la constatation aussi, mais n'ai pas compris, ou plus su, pourquoi ça n'allait pas, maintenant au moins, je le sais (j'irais dormir moins c** ce soir )

    Je ne sais pas par contre pourquoi le reset de mon formulaire ne marche pas sur ma liste. Cela m'intrigue, je vais essayer de voir si jamais je vois pourquoi ça ne marche pas, je noterais une réponse dans les prochains jours. Sinon, c'est que je n'aurais rien trouver.

    En vous remerciant tous pour l'aide que vous m'avez apporter, et les conseils que j'aurais retenu pour le développement future, je vous souhaite de passer une belle journée nuageuse et froide...
    First step: F.A.Q.
    Second step: Forum -> Recherche
    Thrid step: Forum -> Poser une question
    Fourth step: Forum -> Attendre une réponse
    Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

    Simple non ? l'utilisation de developpez.com

Discussions similaires

  1. Select multiple
    Par lfournial dans le forum Struts 1
    Réponses: 20
    Dernier message: 24/02/2011, 12h14
  2. select multiple sur plusieurs tables
    Par syl2095 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2004, 15h48
  3. [VB6] sélection multiple de colonne dans excel grâce à VB
    Par biquet dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/08/2004, 12h44
  4. <select multiple ...>
    Par ayobo dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 08h49
  5. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16

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