Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I just solve my question with event wrapper by using the following code. It's quite long code. But it works well on my basic testing. I can assign prepare submit event for watermark extender, before submit event for control validator, submit event for sending form data via AJAX and after submit event for form posting indicator.</p> <pre><code>/* jQuery - Form Submit Event Extender */ var _prepareSubmitFunction = new Object(); var _beforeSubmitFunction = new Object(); var _submitFunction = new Object(); var _afterSubmitFunction = new Object(); jQuery.fn._oldSubmit = jQuery.fn.submit; function formSubmitEventExtender_Init(form) { form = $(form); form.unbind('submit.formSubmitEventExtender'); form.bind('submit.formSubmitEventExtender', null, function () { form.prepareSubmit(); if (form.beforeSubmit()) { var result = true; for (var i in _submitFunction[form.attr('id')]) { var temp = _submitFunction[form.attr('id')][i](); temp = ((temp === false) ? false : true); result = result &amp;&amp; temp; } form.afterSubmit(); return result; } else { return false; } }); } jQuery.fn.prepareSubmit = function (fn) { var x = $(this); x.ensureHasId(); var id = x.attr('id'); if (fn) { if (!_prepareSubmitFunction[id]) { _prepareSubmitFunction[id] = new Array(); formSubmitEventExtender_Init(x); } if ($.inArray(fn, _prepareSubmitFunction[id]) &lt; 0) _prepareSubmitFunction[id].push(fn); } else { for (var i in _prepareSubmitFunction[id]) { _prepareSubmitFunction[id][i](); } } return x; }; jQuery.fn.beforeSubmit = function (fn) { var x = $(this); x.ensureHasId(); var id = x.attr('id'); if (fn) { if (!_beforeSubmitFunction[id]) { _beforeSubmitFunction[id] = new Array(); formSubmitEventExtender_Init(x); } if ($.inArray(fn, _beforeSubmitFunction[id]) &lt; 0) _beforeSubmitFunction[id].push(fn); } else { for (var i in _beforeSubmitFunction[id]) { if (!_beforeSubmitFunction[id][i]()) return false; } return true; } return x; }; jQuery.fn.submit = function (fn) { var x = $(this); x.ensureHasId(); var id = x.attr('id'); if (fn) { if (!_submitFunction[id]) { _submitFunction[id] = new Array(); formSubmitEventExtender_Init(x); } if ($.inArray(fn, _submitFunction[id]) &lt; 0) _submitFunction[id].push(fn); } else { x._oldSubmit(); } return x; }; jQuery.fn.afterSubmit = function (fn) { var x = $(this); x.ensureHasId(); var id = x.attr('id'); if (fn) { if (!_afterSubmitFunction[id]) { _afterSubmitFunction[id] = new Array(); formSubmitEventExtender_Init(x); } if ($.inArray(fn, _afterSubmitFunction[id]) &lt; 0) _afterSubmitFunction[id].push(fn); } else { for (var i in _afterSubmitFunction[id]) { _afterSubmitFunction[id][i](); } } return x; }; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload