I figured it out!. findZoneManager wasn't finding the zone because it was getting called during initialization before the zone actually gets instantiated by tapestry's init javascript. I moved the findZoneManager code into the actual click event, and not it works perfectly. Thanks!
Now I need to do what I've been avoiding all my professional career - learn JS :) On Apr 18, 2011, at 12:43 AM, Taha Hafeez wrote: > Hi > > Did you try Tapestry.findZoneManager(formId); > > regards > Taha > > On Mon, Apr 18, 2011 at 9:23 AM, Lenny Primak <lpri...@hope.nyc.ny.us>wrote: > >> Hi all, >> >> I have a mixin that watches for zone updates. >> This mixin is set up on a submit button for a form. >> I cannot fund a way to make the mixin fetch the zone from an underlying >> form. >> So, as a workaround I am forced to specify the same zone twice. Any hints >> on how I can get the zone inside the mixin from the underlying form? >> >> <form t:type="form" zone="myZone"> >> <h1>Press >> <button t:type="submit" value="Here" event="doThis" >> t:mixins="DisableAfterSubmit" zone="myZone"> !!! I DO NOT WANT TO SPECIFY >> SAME ZONE TWICE >> <t:remove>Here</t:remove> >> </button> >> to Do this!</h1> >> </form> >> >> >> Thanks! >> >> -------------------------- >> >> @Import(library="context:scripts/DisableAfterSubmit.js") >> public class DisableAfterSubmit >> { >> @AfterRender >> void addDisabler() >> { >> js.addScript("new DisableAfterSubmit('%s', '%s', '%s');", >> submitButton.getClientId(), fs.getClientId(), zone); >> } >> >> >> @Environmental private JavaScriptSupport js; >> @InjectContainer private ClientElement submitButton; >> @Environmental private FormSupport fs; >> @Parameter(required=true, defaultPrefix=BindingConstants.LITERAL) >> private String zone; >> } >> -------------------------------- >> >> /** >> * Disable Submit button after AJAX Form Submission >> */ >> >> var DisableAfterSubmit = Class.create(); >> DisableAfterSubmit.prototype = { >> initialize: function(elementId, formId, zoneId) { >> this.formId = formId; >> this.elementId = elementId; >> this.zoneId = zoneId; >> >> Event.observe($(elementId), 'click', >> >> this.doDisable.bindAsEventListener(this)); >> >> Event.observe($(zoneId), >> Tapestry.ZONE_UPDATED_EVENT, >> >> this.doEnable.bindAsEventListener(this)); >> }, >> >> doDisable: function(e) { >> $(this.elementId).disable(); >> $(this.formId).onsubmit(); >> }, >> >> doEnable: function(e) { >> $(this.elementId).enable(); >> } >> }; >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org