response.js gets executed when you load a component. There is no "scope separation" that executes the javascript fragment only in the loaded component.
PS: didn't you asked already and solved the issue with this dreaded .icon-calendar ? On Monday, December 3, 2012 4:26:47 PM UTC+1, Richard wrote: > > Hello, > > I read in the book that response.js should be use to insert javascript > stuff that should be executed in context of a LOAD component. My > understanding is that the piece of javascript embeded in the component > should be executed only in the component... But under web2py 221 I can get > this jQuery code executed no matter if the form is the one of the component > or the main form of the page : > > jQuery(document).ready(function () { > jQuery(".icon-calendar").click(function() > {$(this).parent().prev().click().focus();}); > }); > > Detailed explanation : > > # Controller > def main_form(): > form = SQLFORM(db.table1) > return dict(form=form) > > def embeded_form(): > form = SQLFORM(db.table2) > response.js = 'jQuery(document).ready(function () { > jQuery(".icon-calendar").click(function() > {$(this).parent().prev().click().focus();}); });' > return dict(form=form) > > # View > main_form.html > > {{=form}} > {{=LOAD(c='controller', f='embeded_form', ajax=True)}} > <script> > jQuery(document).ready(function () { > jQuery(".icon-calendar").click(function() > {$(this).parent().prev().click().focus();}); > }); > </script> > > Doesn't matter if I comment out the jQuery below, I still have it to work > for the main form and the embeded form component. If I remove the > reponse.js jquery, I only get the main form to work properly. But the > embeded form calendar won't show up. > > The problem is that if I put the script in the view of the main_form and > in the respons.js, when I click on the icon calendar of the main (only) I > get many instance of the form that show up that get stacked at the end of > the page. > > Thanks > > Richard > --