I think I see what's going on. web2py's ajax function is explicitly getting the 'value' of each element id that is passed. The value of a checkbox doesn't change, it's just not sent during a submit unless it is checked. The ajax function would need to be changed to account for this.
On Aug 27, 6:27 pm, "mr.freeze" <[email protected]> wrote: > I'm not sure why it's always on but you can store the state of the > checkbox in a hidden field and pass it back with the ajax request like > so: > > def search2(): > form = FORM( > TABLE( > TR(INPUT(_name='mytxt', _id='mytxt', _value='a > text...')), > TR(INPUT(_type='checkbox', _name='mychk', > _id='mychk',_checked="true",_onclick="jQuery('#chkval').val > (this.checked)")), > TR(INPUT > (_type='hidden',_name='chkval',_id='chkval')), > TR(INPUT(_type="button", _value="Buscar", > _onclick="ajax('%s',['mytxt', > 'mychk','chkval'],'target');" % URL(r=request,f='bg_find2'))) > ) > ) > > return dict(form=form, target=DIV(_id='target')) > > def bg_find2(): > return request.var.chkval > > On Aug 27, 3:44 pm, Jose <[email protected]> wrote: > > > Hi, > > > The follows is a simplification. > > > If my controller is: > > > def buscar(): > > form = FORM(TABLE( > > TR(INPUT(_name='mytxt', _id='mytxt', _value='a text...')), > > TR(INPUT(_type='checkbox', _name='mychk', _id='mychk', > > _value='')), > > TR("", INPUT(_type="submit",_value="Buscar")) > > )) > > > if form.accepts(request.vars, session, keepvalues=True): > > if request.vars.mychk: > > ... > > ... > > rows = db(query1 & query2).select() > > > return dict(form=form, rows=rows) > > > When I send the form, I know the state of the checkbox on the line [if > > request.vars.mychk]. This works well! > > > In the example below I can not get the same result, The condition is > > always true. This is because I is returning the value, which is always > > 'on', even though I put something else. > > > def search2(): > > form = FORM(TABLE( > > TR(INPUT(_name='mytxt', _id='mytxt', _value='a text...')), > > TR(INPUT(_type='checkbox', _name='mychk', _id='mychk', > > _value='')), > > TR("", INPUT(_type="button", _value="Buscar", > > _onclick="ajax('bg_find2',['mytxt', 'mychk'], > > 'target');")) > > )) > > > return dict(form=form, target=DIV(_id='target')) > > > def bg_find2(): > > if request.vars.mychk: > > ... > > > return dict(txt=request.vars.mytxt, chk=request.vars.mychk) > > > How can I access the checkbox checked property? > > Or more simply, how can I know the state of the checkbox in bg_find2 > > > Regards > > Jose --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

