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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 : 38
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    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 éclairé 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
    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.

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 éclairé 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
    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...

  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
    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+

  8. #8
    Membre éclairé 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
    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...

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