I have a select
form field that I want to mark as "readonly", as in the user cannot modify the value, but the value is still submitted with the form. Using the disabled
attribute prevents the user from changing the value, but does not submit the value with the form.
The readonly
attribute is only available for input
and textarea
fields, but that's basically what I want. Is there any way to get that working?
Two possibilities I'm considering include:
- Instead of disabling the
select
, disable all of theoption
s and use CSS to gray out the select so it looks like its disabled. - Add a click event handler to the submit button so that it enables all of the disabled dropdown menus before submitting the form.
I use next code for disable options in selections
Where
select_name
is the name that you would normally give the<select>
.Another option.
Now with this one, I have noticed that depending on what webserver you are using, you may have to put the
hidden
input either before, or after the<select>
.If my memory serves me correctly, with IIS, you put it before, with Apache you put it after. As always, testing is key.
Disable the fields and then enable them before the form is submitted:
jQuery code:
Same solution suggested by Tres without using jQuery
This might help someone understand more, but obviously is less flexible than the jQuery one.
Based on the solution of the Jordan, I created a function that automatically creates a hidden input with the same name and same value of the select you want to become invalid. The first parameter can be an id or a jquery element; the second is a Boolean optional parameter where "true" disables and "false" enables the input. If omitted, the second parameter switches the select between "enabled" and "disabled".