Passer un paramètre dans un select disabled

WRInaute passionné
Bonjour

j'ai dans mon formulaire un
Code:
<select id="monselect" name="monselect" disabled="true">
<option value="1" selected="selected">EN COURS</option>
<option value="2">CLOTURE</option>
</select>

le problème est que quand je valide mon formulaire, la valeur de l'élément sélectionné n'est pas stocke dans monselect.

est-ce du au fait qu'il soit en disabled ? si oui, commet contourner ce souci ?

merci
 
WRInaute passionné
Re: Passer un parmatère dans un select disabled

allez tag résolu :)
Code:
<select id="monselect" name="monselect" disabled="true">
<option value="1" selected>EN COURS</option>
<option value="2">CLOTURE</option>
</select>
 
WRInaute passionné
Re: Passer un parmatère dans un select disabled

je l'ai bien sûr, puisque les paramètres passent sans le disabled

j'insiste sur le fait que c'est le disabled qui fait tout foirer
 
WRInaute passionné
clair!
en effet j'ai testé le code et idem chez moi ce qui parait normal.

cependant il semblerait que cela ne soit pas possible (récupérer la valeur) d'un autre coté ça semble normal puisque sémantiquement parlant c'est une erreur de chercher a récupérer une valeur "disable"

* quel est l'interet ?
* peux tu recuperer cette valeur ailleurs ? et l'inclure dans un input type="hidden" par exemple ?
 
WRInaute passionné
L'intérêt c'est dans un intranet, l'accès à ce champ est désactivé suivant le type de permission de l'utilisateur.

Mais je voudrais quand même qu'il puisse le voir, donc je le mets en disabled pour qu'il ait un accès en "lecture seule"

le problème est que lors de la validtaion la valeur est perdue, puisque qu'il reçoit 0 au lieu du bon value.

existe t-il un équivalent à disabled en js ou jquery par exemple, mais qui conserverait la valeur du champ ?

EDIT : ce qui est bizarre c'est que dans un type="checkbox", le disabled n'empêche pas le passage de paramètre ...
 
WRInaute accro
Pourquoi ne pas mettre le disabled="disabled" sur chaque <option> ... comme ça le select est totalement lisible et on ne px choisir aucune option.

Edit: je viens de tester, ça ne va pas mieux :(
Edit2: Solution: avec readonly="readonly" sur le <select>, on peux choisir d'autres options, mais c'est bien en lecture seule et $_POST['monselect'] = 2
 
WRInaute passionné
spout a dit:
Edit2: Solution: avec readonly="readonly" sur le <select>, on peux choisir d'autres options, mais c'est bien en lecture seule et $_POST['monselect'] = 2

je testerais demain et te fais un retour

merci encore
 
WRInaute accro
J'avais mal testé, l'attribut readonly ne fonctionne pas avec les <select>.
Et HTML Validator: Avertissement: <select> proprietary attribute "readonly" :(

Autre solution en Javascript:
Code:
<select id="monselect" name="monselect" onfocus="this.initialSelect = this.selectedIndex;" onchange="this.selectedIndex = this.initialSelect;">
<option value="1" selected="selected">EN COURS</option>
<option value="2">CLOTURE</option>
</select>
 
WRInaute passionné
spout a dit:
J'avais mal testé, l'attribut readonly ne fonctionne pas avec les <select>.
excat je viens de tester

spout a dit:
Autre solution en Javascript:
Code:
<select id="monselect" name="monselect" onfocus="this.initialSelect = this.selectedIndex;" onchange="this.selectedIndex = this.initialSelect;">
<option value="1" selected="selected">EN COURS</option>
<option value="2">CLOTURE</option>
</select>
je viens de tester, ca marche mais pour le coup c'est vraiment source d'erreur et pas du tout user friendly car la personne pense que ca peut se changer mais à la fin ca se change pas ...
 
WRInaute accro
rudddy a dit:
je viens de tester, ca marche mais pour le coup c'est vraiment source d'erreur et pas du tout user friendly car la personne pense que ca peut se changer mais à la fin ca se change pas ...
Donc tu veux le même affichage que lorsque le <select> est disabled (grisé) et qu'on ne peut voir les <option> (sauf le selected) ?
Si c'est juste pour "griser" le select c'est pas un problème, faut voir si tu veux afficher les autres <options>, mais là est la confusion...
 
WRInaute passionné
Sullyvan a dit:
bonjour,

pourquoi ne pas réactiver le select lors de l'envoi de la requête avec un onsubmit ?

sullyvan bien vu :

Code:
<form action="test.php" method="post" onsubmit="monselect2.disabled='';">
	<select name="monselect2" id="monselect2" disabled="disabled">
		<option value="1">option 1</option>
		<option value="2" selected="selected">option 2</option>
		<option value="3">option 3</option>
		<option value="4">option 4</option>
		<option value="5">option 5</option>		
	</select>

ca marche

merci +1 reco
 
WRInaute passionné
je rouvre le topic car malheureusement c'est assez lourd à mettre en place car ce select placé dasn un include est appelé dans une centaine de pages php différentes. je me vois mal faire chaque page en cherchant la balise <form et en rajoutant un onSubmit !

;-(
 
WRInaute accro
Tu as tjs jQuery dans ce site ?
Je t'ai déjà aidé une fois avec: each()
Code:
$(document).ready(function(){
$('form').each(function() {
    $(this).attr('onsubmit', "monselect2.disabled='';");
  });
});

:!: c'est pour tous les <form>... adapter le selecteur (si le form à un id, class)
 
WRInaute discret
merci pour la reco.

Et sans Jquery ajouterce code en dessous du select
Code:
<script type="text/javascript">document.getElementById('monselect2').form.onsubmit=function(){document.getElementById('monselect2').disabled='';}</script>
 
Discussions similaires
Haut