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 :

Bloquer sélection/dé sélection d'un select multiple


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut Bloquer sélection/dé sélection d'un select multiple
    Bonjour,

    Tout est dans le titre!

    Je cherche un moyen d'empêcher la sélection / dé sélection des options d'un select multiple sachant que readonly ne fonctionne pas sur un select et que disabled ne me convient pas dans le sens où les options du select ne sont plus lisibles sous Chrome...

    Une idée ?

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 842
    Points
    4 842
    Par défaut
    C'est moche mais tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <select id="monSelect" onchange="this.selectedIndex = monIndex;">
    	<option name="a">a</option>
    	<option name="b">b</option>
    </select>
    <script type="text/javascript">
      var monIndex = document.getElementById("monSelect").selectedIndex;
    </script>

  3. #3
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <select multiple="multiple">
        <option value="1" onclick="return false;" onselectstart="return false;">1</option>
        <option value="2" onclick="return false;" onselectstart="return false;">2</option>
        <option value="3" onclick="return false;" onselectstart="return false;">3</option>
        <option value="4" onclick="return false;" onselectstart="return false;">4</option>
        <option value="5" onclick="return false;" onselectstart="return false;">5</option>
        <option value="6" onclick="return false;" onselectstart="return false;">6</option>
        <option value="7" onclick="return false;" onselectstart="return false;">7</option>
        <option value="8" onclick="return false;" onselectstart="return false;">8</option>
        <option value="9" onclick="return false;" onselectstart="return false;">9</option>
        <option value="10" onclick="return false;" onselectstart="return false;">10</option>
    </select>
    devrait fonctionner pour tous les navigateurs.

    EDIT : Après essai, il faut remplacer "return false" par "this.selected=false"...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Merci pour vos réponses !

    Et si je génère ces options en JS avec appendChild comment est-ce que je pourrais déclarer le onclick et le onselectstart ?

    Ce code n'a pas l'air de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(vals[++i]){ 
    		var newOption = window.opener.document.createElement('option'); 
    		newOption.innerHTML = vals[i];
    		newOption.value = vals[i];
    		newOption.onchange = this.selected=false;
    		newOption.onselectstart = this.selected=false;
    		selectList.appendChild(newOption);
    	}

  5. #5
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    newOption.onchange = function(){this.selected=false;};
    newOption.onselectstart = function(){this.selected=false;};

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Toujours pas.
    En cliquant je peux toujours sélectionner / dé sélectionner la sélection ...

    Ça fonctionne pour toi Bovino ?

  7. #7
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'avais juste copié collé ton code pour le rectifier sans me rendre compte que tu as changé le onclick par un onchange inopportun !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Ah oui exact!

    Mais en changeant "onchange" par "onclick" ça ne change justement pas grand chose au niveau du résultat .

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 082
    Points : 44 698
    Points
    44 698
    Par défaut
    pas sûr que le onclick sur une option soit opérationnel, qui plus est ne serait pas déclenché sur une sélection au clavier.

    Pourquoi ne pas supprimer les options que l'on ne souhaite plus, quitte à les sauvegarder pour les restaurer le cas échéant ?

  10. #10
    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
    Citation Envoyé par NoSmoking Voir le message
    pas sûr que le onclick sur une option soit opérationnel

    Sur certains navigateurs si, mais apparemment IE fait encore des siennes...

  11. #11
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par NoSmoking
    pas sûr que le onclick sur une option soit opérationnel, qui plus est ne serait pas déclenché sur une sélection au clavier.
    Si, c'est accepté pour un select multiple... sauf pour IE pour lequel l'alternative onselectstart me semblait adaptée, mais ça ne semble pas être le cas
    Mais comme tu le fais remarquer, ça ne gère pas la sélection au clavier...

  12. #12
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 082
    Points : 44 698
    Points
    44 698
    Par défaut
    je viens de faire un rapide test
    • FireFox, Opera -> OK
    • Safari, Chrome -> OK si multiple
    • IE -> que nenni mon brave

    testé sous Wind'eau

  13. #13
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par NoSmoking
    je viens de faire un rapide test
    • FireFox, Opera -> OK
    • Safari, Chrome -> OK si multiple
    • IE -> que nenni mon brave

    testé sous Wind'eau
    Citation Envoyé par Bovino
    Si, c'est accepté pour un select multiple... sauf pour IE


    Ca confirme

    Ceci dit, pour compléter ton idée
    Pourquoi ne pas supprimer les options que l'on ne souhaite plus, quitte à les sauvegarder pour les restaurer le cas échéant ?
    dav2k, pourquoi vouloir mettre un select si tu ne veux pas d'un select ?
    Autant utiliser une liste par exemple à laquelle tu donnerais un style approprié...

  14. #14
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 082
    Points : 44 698
    Points
    44 698
    Par défaut
    Citation Envoyé par Bovino Voir le message
    dav2k, pourquoi vouloir mettre un select si tu ne veux pas d'un select ?
    Autant utiliser une liste par exemple à laquelle tu donnerais un style approprié...
    autre solution, c'est l'utilisation d'un drag&drop, au hasard, http://javatwist.imingo.net/dragdrop.htm

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Bovino Voir le message

    dav2k, pourquoi vouloir mettre un select si tu ne veux pas d'un select ?
    Autant utiliser une liste par exemple à laquelle tu donnerais un style approprié...
    Le select permet d'organiser le listing d'une série d'options dont le contenu est géré par l'utilisateur via des checkbox présentes dans une fenêtre enfant.
    Il fait plus office de témoin qu'autre chose ...

    Spaffy m'a donné une bonne idée qui est d'ajouter un div positionné au dessus avec z-index, même si cela n’empêche en rien la modification au clavier ça reste compatible avec tous les browsers pour ce qui est de l'utilisation à la souris...
    Je pense que je vais oublier cette balise select et envisager autre chose...

    Pour ce qui est du drag and drop c'est bien mais ça prend énormément de place et je me vois pas afficher une 100aine d'options dans mon formulaire sous cette forme là...

    En tout cas merci pour vos réponses.

  16. #16
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 842
    Points
    4 842
    Par défaut
    Pour ce qui est de la sélection au clavier tu peux simplement rediriger le focus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <script type="text/javascript">
    function selectNext(current) {
    	var e = current;
    	while ((e = e.nextSibling) && e.nodeName != "INPUT") {}
    	e.focus();
    }
    </script>
    <input type="text"/>
    <select onfocus="selectNext(this);">
    	<option>a</option>
    	<option>b</option>
    <select>
    <input type="text"/>
    Bon, là j'ai fait un code "sale" en mettant en dur qu'on avait un "INPUT" derrière mais rien ne t'empêche de le faire proprement hein (genre en énumérant l'ensemble des éléments "focusable" (input, select, button, textarea, à-priori-c'est-tout, ...) et en faisant gaffe de reboucler vers le premier champs au cas où, ou en redirigeant vers un id précis).

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Ouep je vois ...
    Finalement je m'oriente vers un "select" créé avec jQuery.
    Le div en z-index n'était pas viable dans le sens où il était impossible de scroll down le select...

    Merci quand même!

  18. #18
    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 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Le div en z-index n'était pas viable dans le sens où il était impossible de scroll down le select...
    parceque tu avais placé le div au dessus de la scrollbar

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 50
    Points : 25
    Points
    25
    Par défaut
    Ouep possible mais j'ai créé mon select de toutes pièces du coup j'en fais ce que je veux!

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

Discussions similaires

  1. [AC-2003] Copier la sélection d'une zone de liste multiple vers une autre zone de liste
    Par Florent_45 dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/07/2011, 09h21
  2. Sélection personnalisée en javascript dans un select multiple
    Par david64 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/04/2011, 13h45
  3. Réponses: 2
    Dernier message: 14/11/2008, 16h01
  4. [MySQL] Select multiple pré-sélectioné selon requête SQL
    Par elodie1234 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/07/2008, 14h29
  5. Récupération des valeurs select multiple sans sélection
    Par akara dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 17/07/2007, 19h10

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