Here is a simple fix if there hasn't been one added to Web2Py yet. Use the 
Bootstrap readonly attribute.

example:

form.element('input', _id='RentalTransactionMaster_TotalAmt')['_readonly']=''


Placed in controller after the form = SQLFORM(...) declaration.



On Friday, March 31, 2017 at 5:25:59 AM UTC-4, Joe Barnhart wrote:
>
> I'm going a little nuts with forms that have readonly fields.  Examples 
> are forms where some fields are shown to the user so they can see the 
> contents, but they aren't allowed to change them.  For example, an 
> "expiration date" for a subscription.  They can see when it expires, but 
> they can't just edit it.  They have to go thru an ordering process for that.
>
> The Field flag of writable=False has not proved useful.  It changes the 
> field to a simple piece of text and thus breaks any custom formstyle I'm 
> using.  The simple text without an input field looks ugly and doesn't match 
> spacing, fonts, or any of the other myriad styles used in the read/write 
> fields.  Sad to say, writable=False just is not useful.
>
> I have created an alternative that creates the fields as usual, but marks 
> them with a "readonly" attribute.  Javascript can then be used to ensure 
> the contents are not modified, even for tricky fields like date selectors 
> and list box widgets.  But now we get to the underlying problem -- the form 
> validator fails when I take this approach.
>
> Because the readonly fields are readonly, they do not show up in the 
> request.vars when the form is submitted.  But since the SQLFORM knows 
> nothing of this, it just sees null values for the fields and throws a 
> validation error for elements like list boxes (which can't be empty).
>
> It's almost like I want to change the SQLFORM definition after the form is 
> created (with the readonly list boxes) and then remove those fields from 
> the SQLFORM when it does its validate processing, so it would just ignore 
> the missing fields and not try to update the record with empty values.
>
> Here's an example.  You can see the cursor which tells the user the field 
> is not editable.  On this view the expire date, the season, the age, and 
> the US Swim ID are all non-editable fields.  But the season is an example 
> of an option list which causes the form processing to throw an error and 
> fail.
>
> Just looking for some ideas.
>
> Joe
>
>
> <https://lh3.googleusercontent.com/-BqVuGZtmcZw/WN4frOAVqLI/AAAAAAAAAoc/Hd37dU2uKB89UIRmwZTI5bfx9q2wqDN-QCLcB/s1600/Form_with_readonly.png>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to