Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2011, 11h02   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
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 ?
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 11h19   #2
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
C'est moche mais tu peux essayer ça :
Code :
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>
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 11h56   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Code html :
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"...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 12h16   #4
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
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 :
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);
	}
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 12h22   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Code :
1
2
newOption.onchange = function(){this.selected=false;};
newOption.onselectstart = function(){this.selected=false;};
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 12h38   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
Toujours pas.
En cliquant je peux toujours sélectionner / dé sélectionner la sélection ...

Ça fonctionne pour toi Bovino ?
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 13h26   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
J'avais juste copié collé ton code pour le rectifier sans me rendre compte que tu as changé le onclick par un onchange inopportun !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h44   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
Ah oui exact!

Mais en changeant "onchange" par "onclick" ça ne change justement pas grand chose au niveau du résultat .
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 18h35   #9
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
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 ?
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 18h42   #10
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 768
Points : 5 768
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...
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 18h42   #11
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
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...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 18h54   #12
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
je viens de faire un rapide test
  • FireFox, Opera -> OK
  • Safari, Chrome -> OK si multiple
  • IE -> que nenni mon brave
testé sous Wind'eau
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2011, 19h12   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
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
Citation:
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é...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2011, 09h56   #14
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 930
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 930
Points : 4 744
Points : 4 744
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
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2011, 00h56   #15
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
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.
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 09h14   #16
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Pour ce qui est de la sélection au clavier tu peux simplement rediriger le focus :
Code :
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).
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 10h59   #17
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
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!
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h11   #18
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Citation:
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
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 11h34   #19
Candidat au titre de Membre du Club
 
Inscription : juillet 2010
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 49
Points : 12
Points : 12
Ouep possible mais j'ai créé mon select de toutes pièces du coup j'en fais ce que je veux!
dav2k est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h41.


 
 
 
 
Partenaires

Hébergement Web