On Feb 6, 2010, at 9:33 PM, Iceberg wrote: > On Feb7, 8:01am, Jonathan Lundell <jlund...@pobox.com> wrote: >> On Feb 6, 2010, at 12:58 PM, Jonathan Lundell wrote: >> >>> On Feb 6, 2010, at 12:38 PM, mdipierro wrote: >> >>>> form[0][-1][1].append(BUTTON(_onclick="....")) >> >>> Thanks. >> >>> Ideally, I'd like to return to the form.accepts call in such a way that the >>> accepts return test can recognize the cancelation and then redirect as >>> necessary. Somewhat parallel to testing form.error, I'd test (say) >>> form.cancel. >> >>> Does that make sense? It seems to me that it might be a useful general >>> capability for form processing. >> >>> One angle I was thinking of, but haven't investigated, is having multiple >>> submit buttons, with accepts() making available the name and/or value of >>> the button that was clicked. >> >>> That seems more in keeping with the self-submit philosophy, don't you think? > > > Yes, but be careful of multiple submit buttons. See this post: > https://groups.google.com/group/web2py/browse_frm/thread/f44b6f95b058df5
I'll need to look at that more closely. Thanks. Perhaps I can use <button> and JavaScript. > >> >> I think I got it to work. >> >> form[0][-1][1].append(INPUT(_type="submit", _name="button", >> _value="Cancel")) >> >> and then after calling accepts: >> >> if request.vars.button == "Cancel": >> session.flash = 'edit canceled' >> else: >> session.flash = "edit accepted" >> redirect(URL(r=request, f='servers')) >> >> ...or something similar in the form.error case. > >> (I find that I'm a little fuzzy on the various return cases for accepts, >> though.) > > That is inevitable since you need to handle two different situations > in one action. So I would suggest just use a normal html reset button > at most. Reset doesn't do it for me; I need an actual cancel function that can do a specified page load. > > >> >> Question: what exactly is form[0][-1][1].append appending to? Can I append >> more than once to that same object? > > Yes. FORM is a container for many components. You can change it if you > want to. But a more readable style should be: > form = FORM( > ... # all the normal stuff > INPUT(_type='submit'), > INPUT(_type='reset'), > ) Except it's an SQLFORM, which won't accept INPUT arguments. The big problem with form[0][-1][1].append is that it "knows" too much about the internal structure of form. I can't expect the guarantee of backward compatibility to include constructs like that. So I'm left with two problems. The IE with multiple submits, and adding a button to the SQLFORM. Both are semi-solved, I think, but not in an ideal way. -- 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.