Make rx_ajax forms more customizable

This commit is contained in:
Kijin Sung 2021-02-02 16:04:53 +09:00
parent 2270cf2729
commit ca5d90fd07

View file

@ -369,33 +369,35 @@
/** /**
* Function for AJAX submission of arbitrary forms. * Function for AJAX submission of arbitrary forms.
*/ */
$(document).on('submit', 'form.rx_ajax', function(event) { XE.ajaxForm = function(form, callback_success, callback_error) {
// Abort if the form already has a 'target' attribute. // Abort if the form already has a 'target' attribute.
var form = $(this); form = $(form);
if (form.attr('target')) { if (form.attr('target')) {
return; return;
} }
// Prevent page refresh.
event.preventDefault();
// Get success and error callback functions. // Get success and error callback functions.
var callback_success = form.data('callback-success'); if (typeof callback_success === 'undefined') {
if (callback_success && window[callback_success] && $.isFunction(window[callback_success])) { callback_success = form.data('callback-success');
callback_success = window[callback_success]; if (callback_success && window[callback_success] && $.isFunction(window[callback_success])) {
} else { callback_success = window[callback_success];
callback_success = function(data) { } else {
if (data.message && data.message !== 'success') { callback_success = function(data) {
rhymix_alert(data.message, data.redirect_url); if (data.message && data.message !== 'success') {
} rhymix_alert(data.message, data.redirect_url);
if (data.redirect_url) { }
redirect(data.redirect_url); if (data.redirect_url) {
} redirect(data.redirect_url);
}; }
};
}
} }
var callback_error = form.data('callback-error'); if (typeof callback_error === 'undefined') {
if (callback_error && window[callback_error] && $.isFunction(window[callback_error])) { callback_error = form.data('callback-error');
callback_error = window[callback_error]; if (callback_error && window[callback_error] && $.isFunction(window[callback_error])) {
} else { callback_error = window[callback_error];
callback_error = null; } else {
callback_error = null;
}
} }
// Set _rx_ajax_form flag // Set _rx_ajax_form flag
if (!form.find('input[name=_rx_ajax_form]').size()) { if (!form.find('input[name=_rx_ajax_form]').size()) {
@ -423,6 +425,10 @@
} else { } else {
window.exec_json('raw', form.serialize(), callback_success, callback_error); window.exec_json('raw', form.serialize(), callback_success, callback_error);
} }
};
$(document).on('submit', 'form.rx_ajax', function(event) {
event.preventDefault();
XE.ajaxForm(this);
}); });
/** /**