the logic behind is suppressing double submission. web2py disables the
submit button when you click on it until a proper response is returned.
Don't EVER use inline javascript, and don't use web2py.js internal
functions without proper knowledge of the inner workings :-P
On Wednesday, August 13, 2014 8:52:25 PM UTC+2, Michael Beller wrote:
>
> I just encountered the same problem. I'm using a Bootstrap Modal form and
> encountering the same problem - the form sends and receives data via AJAX
> but then adds the 'disabled' class to the button.
>
> I found this logic in web2py.js but I'm not clear on what's happening and
> why:
>
> // Form input elements disabled during form submission
> disableSelector: 'input, button, textarea, select',
> // Form input elements re-enabled after form submission
> enableSelector: 'input:disabled, button:disabled, textarea:disabled,
> select:disabled',
>
> Have either of you found a solution?
>
> On Sunday, August 3, 2014 2:53:50 PM UTC-4, Reza Amindarbari wrote:
>>
>> Did you figure out what was wrong? I faced the same issue. Everything
>> works fine when I take out the ajax function.
>>
>> On Sunday, May 4, 2014 9:33:05 AM UTC-4, John Drake wrote:
>>>
>>> I've created a simple ajax form to update a "post" database. For some
>>> strange reason when I post a new message, the button greys out.
>>>
>>> Here is the model:
>>>
>>> db.define_table('t_post',
>>> Field('f_post', type='text',
>>> label=T('Post')),
>>> auth.signature,
>>> format='%(f_post)s')
>>>
>>> Here are my controller functions.
>>>
>>> def ajax_post():
>>> posts = crud.select(db.t_post, fields=['f_post'], query =
>>> db.t_post.created_by == auth.user,
>>> headers={'t_post.f_post': 'Post'}, orderby =
>>> ~db.t_post.created_on)
>>> search = crud.search(db.t_post)
>>> return dict(posts=posts, search=search)
>>>
>>> def new_post():
>>> postdata = request.vars.post
>>> db.t_post.insert(f_post = postdata)
>>> posts = crud.select(db.t_post, fields=['f_post'], query =
>>> db.t_post.created_by == auth.user,
>>> headers={'t_post.f_post': 'Post'}, orderby =
>>> ~db.t_post.created_on)
>>> return posts
>>>
>>> Here is the model:
>>>
>>> {{extend 'layout.html'}}
>>> <h1>This is the default/ajax_post.html template</h1>
>>> <form onsubmit="return false">
>>> <div>Post : <input name="post"/></div>
>>> <div><button onclick="ajax('new_post', ['post'],'results')">Post
>>> Message</button></div>
>>> </form>
>>> <div id="results">
>>> {{=posts}}
>>> </div>
>>> <div>
>>> {{=search[0]}}
>>> </div>
>>>
>>> At first I used an input field with type "submit" for the submit
>>> button. When that happened, it would
>>> grey out and the value would set to "Working....". At least now button
>>> text doesn't change, but it
>>> it still grey's out. Inspecting the element in Firefox I get:
>>>
>>> <button value="Working..." class="btn disabled"
>>> onclick="ajax('new_post', ['post'],'results')">Post Message</button>
>>>
>>> Why? I didn't ask it to change the button's class to disabled. And it
>>> stays greyed even though
>>> the results have returned and my "results" div has been properly
>>> updated. I can still click on
>>> the button, but it just appears disabled.
>>>
>>
--
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.