The disabled form element is not submitted
Asked Answered
D

3

10

I needed to show some preexisting data from a table and but needed to disable them to prevent user from editing them. So i disabled them

$form -> getElement("elementname") -> setAttrib("disable", true);

When I submit the form, I found out, that the form element does not get submitted at all, just because it was disabled. I confirmed this when I tested removing the disable options.

What is happening? Am i doing something wrong? How to solve this?

Dot answered 24/10, 2011 at 12:24 Comment(2)
Anyway this is not the right way to ensure that the user will no edit the field. You should add a validator to achieve this goal.Commutual
If the goal is to only show the preexisting data, then do just that: print it out, do not use form fields at all.Ichnology
A
21

This is by design, disabled elements do not get submitted with the form.

What you are doing is actually a null practice, no matter what you do to that form in put it will be editable by the end user. You simply cannot trust form input - even hidden fields - to not be tampered with.

Your best bet is to just display the information to the user and load it again after the form has been submitted; at worst store it in a session.

Aiken answered 24/10, 2011 at 12:37 Comment(0)
A
17

This worked like a charm for me. It prevents the element from being edited and will pass it through the post.

$this->username->setAttrib('readonly', 'true');
Apparently answered 25/5, 2012 at 11:17 Comment(1)
JavaScript can still access the read only element and change its value.Sugarcoat
T
1

I handle these type of scenarios using hidden elements. Add a hidden element with the same content that is there in your disabled element. When the form is posted, use the value from the hidden element.

But be cautious that the use can modify the value of the hidden element using Firebug or other tools before submitting the form. Always check the form values again before processing.

Toponym answered 24/10, 2011 at 12:52 Comment(1)
Always check the form values again before processing If you are going to have to check the value is what you want it to be after the form is submitted, then there is no point in submitting it in the first place.Aiken

© 2022 - 2024 — McMap. All rights reserved.