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

Contribuez Discussion :

Comment déselectionner tous les éléments d'un select multiple ? [FAQ]


Sujet :

Contribuez

  1. #1
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut Comment déselectionner tous les éléments d'un select multiple ?
    Citation Envoyé par Question
    Comment déselectionner tous les éléments d'un select multiple ?
    Citation Envoyé par Réponse
    Il n'est pas possible de le faire directement en attribuant une valeur à -1 à l'objet select. Malheureusement, cela ne fonctionne pas...
    Une autre idée serait d'itérer sur tous les éléments du select pour les désélectionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(var i = 0; i < oSelect.length; i++){
        oSelect.options[i].selected = false;
    }
    Cette solution fonctionne, mais n'est pas optimale car l'itération se fait aussi sur les options non sélectionnées et le traitement n'est pas optimisé.
    On peut alors penser à ne faire l'itération que sur les options sélectionnées à l'aide du boucle while et de la propriété selectedIndex qui retourne l'index de la première option sélectionnée ou -1 si aucun option ne l'est.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function deselect(oSelect){
        while(oSelect.selectedIndex > -1){
            oSelect.options[oSelect.selectedIndex].selected = false;
        }
    }
    Cette façon de procéder est efficace et produit le résultat attendu, cependant, selectedIndex est une propriété de type read / write, ce qui signifie que l'on peut lui affecter une valeur. La solution la plus efficace sera donc d'affecter à selectedIndex la valeur -1 pour désélectionner toutes les options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function deselect(oSelect){
        oSelect.selectedIndex = -1;
    }
    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
    <!doctype html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>Select multiple</title>
    	</head>
    	<body>
    		<select id="multi" multiple="multiple" size="10">
    			<option value="1">1</option>
    			<option value="2">2</option>
    			<option value="3">3</option>
    			<option value="4">4</option>
    			<option value="5">5</option>
    			<option value="6">6</option>
    			<option value="7">7</option>
    			<option value="8">8</option>
    			<option value="9">9</option>
    			<option value="10">10</option>
    		</select>
    		<input type="button" onclick="document.getElementById('multi').selectedIndex = -1" value="Désélectionner" />
    	</body>
    </html>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut


    J'essaie de regarder ça dans les jours qui viennent.

    d'avoir remonté l'info ici.

  3. #3
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    C'est en ligne.

Discussions similaires

  1. Comment tester si tous les éléments d'une page ont été chargés ?
    Par Gat- dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/02/2007, 13h19
  2. Réponses: 6
    Dernier message: 17/10/2006, 19h55
  3. [code] Comment lister tous les éléments d'une form
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/10/2006, 11h23
  4. comment Récupéré tous les options d'un select ?
    Par maximenet dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/03/2006, 15h59
  5. Réponses: 15
    Dernier message: 21/06/2004, 16h52

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