I don't off the top of my head. I bet every piece of JS code that does 
onsubmi()t is broken. 



On Oct 26, 2011, at 6:24 AM, Geoff Callender 
<geoff.callender.jumpst...@gmail.com> wrote:

> Hi Lenny,
> 
> Thanks for raising this. Are there any examples in JumpStart that you know 
> are broken (I can't find any)? And are there examples that you think will not 
> work if put inside a zone?
> 
> I will think about a simple example to highlight the danger (and would be 
> happy to hear suggestions for a simple example).
> 
> Cheers,
> 
> Geoff
> 
> On 26/10/2011, at 10:22 AM, Lenny Primak wrote:
> 
>> There was an addition of one line:
>> $(this.formId).setSubmittingElement($(this.elementId)); // *** ADDED 
>> otherwise zone gets improperly reloaded
>> $(this.formId).onsubmit();  // Submit Ajax form
>> 
>> If you don't add the first line, the form is reloaded improperly after the 
>> zone update,
>> so it doesn't work the second time.
>> 
>> *** This is not documented anywhere, and really hard to debug.
>> This needs to be incorporated into the JumpStart, because it's now broken 
>> there.
>> 
>> --------------------- FIXED CODE ----------------------
>> /**
>> * Disable Submit button after AJAX Form Submission
>> */
>> 
>> var DisableAfterSubmit = Class.create();
>> DisableAfterSubmit.prototype = {
>>   initialize: function(elementId, formId, event) {
>>       this.formId = formId;
>>       this.elementId = elementId;
>>       this.handler = this.doEnable.bindAsEventListener(this);
>> 
>>       Event.observe($(elementId), 'click',
>>           this.doDisable.bindAsEventListener(this));            
>>   },
>> 
>>   doDisable: function() {
>>       $(this.elementId).disable();
>> 
>>       if($(this.formId).getStorage().zoneId != null) {
>>           this.zoneElement = Tapestry.findZoneManager(this.formId).element;
>>           Event.observe(this.zoneElement, Tapestry.ZONE_UPDATED_EVENT, 
>>             this.handler);    
>> 
>>           $(this.formId).setSubmittingElement($(this.elementId));
>>           $(this.formId).onsubmit();
>>       }
>>       else {
>>           $(this.formId).submit();
>>       }
>>   },
>>        
>>   doEnable: function() {
>>       $(this.zoneElement).stopObserving(Tapestry.ZONE_UPDATED_EVENT, 
>> this.handler);
>>       var element = $(this.elementId);
>>       if(element != null) {            
>>           $(this.elementId).enable();
>>       }
>>   }
>> };
>> 
>> 
>> // Extend the Tapestry.Initializer with a static method that instantiates us
>> Tapestry.Initializer.disableAfterSubmit = function(spec) {
>>   new DisableAfterSubmit(spec.elementId, spec.formId);
>> };
>> 
>> On Oct 25, 2011, at 2:12 PM, Lenny Primak wrote:
>> 
>>> Yes, the changing of the client IDs to semi-random ones was what I 
>>> suspected before
>>> (hence my previous thread)
>>> but after some debugging, it turns out that the mixin gets initialized
>>> after the zone update with the new client IDs correctly
>>> and something else is going on.
>>> It seems like the AJAX event from the mixin to the server stops working,
>>> i.e. onsubmit() winds up doing a no-op even though JS calls the server with 
>>> the form.
>>> 
>>> On Oct 25, 2011, at 1:26 PM, cqasker wrote:
>>> 
>>>> When you get the ajax response back, did any of ids change? The stuff in 
>>>> the
>>>> zone changes but the javascript code from the mixin doesn't . I am not an
>>>> expert but thats the only thing I can think of.
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> 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
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to