I think Jonathan have given enough reason of why not. There is another post to discuss the same thing. http://groups.google.com/group/web2py/msg/79c1f847890a6b60
In short, do resist the temptation of using multiple submit buttons, pal. :) On Feb28, 9:36am, "mr.freeze" <nat...@freezable.com> wrote: > Why not just do this?: > > def index(): > form = FORM('blah blah', > INPUT(_type='submit', _value='Apply',_name="apply"), > INPUT(_type='submit', _value='Reset',_name="reset"), > INPUT(_type='submit', _value='Reset > all',_name="resetall")) > if request.vars.apply: > pass #apply was clicked > elif request.vars.reset: > pass #reset was clicked > elif request.vars.resetall: > pass #resetall was clicked > > On Feb 27, 6:30 pm, Jonathan Lundell <jlund...@pobox.com> wrote: > > > > > On Feb 27, 2010, at 4:03 PM, Thadeus Burgess wrote: > > > > If your running the latest version of web2py, look at > > > controllers/appadmin.py in ccache function. It defines a form with > > > three buttons, (one toc lear ram, one to clear disk, and one to clear > > > both). Click the different submit button executes the appropriate > > > function. > > > A caveat, though: this approach is problematical if the form has a text > > input field and the user submits the form by typing return in an input > > field, rather than clicking a button. > > > The problem as I understand it is that in that case you're not guaranteed > > which button is returned. The culprit (no surprise) is IE. So if Tom's form > > gets submitted by a return in a text field, and the browser is IE, he > > presumably wants to see the Apply button, but might see one of the reset > > buttons instead--not what the user intended. > > > My approach is to use one submit button, and to make the other buttons > > type=button, with an onclick script to reinvoke the same controller with a > > button ID in vars. You'll typically check for that at the beginning of the > > controller. > > > I've been using it for a cancel button, as well as some > > application-specific functions, and it seems to work well. > > > > -Thadeus > > > > On Sat, Feb 27, 2010 at 5:08 PM, Jonathan Lundell <jlund...@pobox.com> > > > wrote: > > >> On Feb 27, 2010, at 3:00 PM, Tiago Almeida wrote: > > > >> Don't know why functions reset, reset_all are not called but they > > >> reference > > >> a "form" variable which is not in scope? Do you have any global "form"? > > > >> The logic below can't work, for lots of reasons. > > >> One is the one Tiago mentions. Another is that input elements do not have > > >> action attributes; forms do. There are ways to accomplish this kind of > > >> thing; most of them involve JavaScript. > > >> This might be helpful (though it's not the way I'd do > > >> it):http://www.javascript-coder.com/html-form/html-form-submit.phtml > > > >> Regards, > > >> Tiago > > >> -- > > > >> On Sat, Feb 27, 2010 at 10:15 PM, Tomas Pelka <tompe...@gmail.com> wrote: > > > >>> Hi all, > > > >>> have some troubles with web form which have more than one button. It is > > >>> obvious that one button (action connected with button) correspond with > > >>> one function. > > > >>> According manual this should work: > > >>> controler > > >>> --------- > > >>> def index(): > > >>> form = FORM('blah blah', > > >>> INPUT(_type='submit', _value='Apply'), > > >>> INPUT(_type='submit', _value='Reset', _action=URL(r=request, > > >>> f='reset'), > > >>> INPUT(_type='submit', _value='Reset all', _action=URL(r=request, > > >>> f='reset_all')) > > >>> if form.accepts(request.vars, session): > > >>> pass > > >>> elif form.errors: > > >>> response.flash = 'Error' > > >>> else: > > >>> pass > > >>> return dict(form=form) > > > >>> def reset(): > > >>> if form.accepts(request.vars, formname=None): > > >>> response.flash = 'Reset' > > >>> elif form.errors: > > >>> response.flash = 'Error' > > >>> else: > > >>> pass > > >>> return dict() > > > >>> def reset_all(): > > >>> if form.accepts(request.vars, formname=None): > > >>> response.flash = 'Resert all' > > >>> elif form.errors: > > >>> response.flash = 'Error' > > >>> else: > > >>> pass > > >>> return dict() > > > >>> But action functions (reset, reset_all) will not call. Am I doing > > >>> anything wrong? > > > >>> Thanks for advice, > > >>> cheers > > > >>> -- > > >>> Tom > > > >>> Key fingerprint = 06C0 23C6 9EB7 0761 9807 65F4 7F6F 7EAB 496B 28AA -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.