Quoin Developers wrote:

I believe that the source of the problem is cforms.js

cocoon.forms.submitForm = function(element, name) {
...
           forms_onsubmitHandlers = new Array();

Removing the above line seems to solve the problem. Any reason why
that line should be there? Can it be removed?
The "forms_onsubmitHandlers" JS variable is an event stack. It allows form widgets to register one or more events that are triggered before the form is submited.

The original implementation (before AJAX) resets the "forms_onsubmitHandlers" variable every time the form need to be submited back to the server. It helps to detect if the form was already submited by the user. It avoids sending twice the request to the server. The trick is: when the user press the 1st time te button it ran all the events and reset the "forms_onsubmitHandlers" variable to clean up the stack, hence when the user press the second time the button there are no more events to call.

The above implementation works pretty well in non-AJAX mode, because when the user response came, the page do a full reload and every widget is allowed to register again the events it needs.

Unfortunately, this does not work in AJAX mode. This is due the AJAX nature. AJAX does not make a full page reload. For this reason, the widgets that registered an event and don't came back in a response loos the onsubmit event. They don't have the opportunity to register again his events on the forms_onsubmitHandlers stack. :-(

WDYT?

Best Regards,

Antonio Gallardo.

Reply via email to