Skip to content
This repository was archived by the owner on Dec 7, 2023. It is now read-only.

Commit 45860c6

Browse files
authored
Merge pull request #17 from dipcode-software/fix/forms-js
Fixed multiple instatiation of forms class.
2 parents e797924 + 80360ce commit 45860c6

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

ajax_views/static/ajax_views/forms.jquery.js

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070

7171
var methods = {
7272
submit: function (data) {
73-
var daf = this.data('daf-data')
73+
var daf = this.data('daf-data');
7474
if (daf) {
7575
daf.submit(data);
7676
}
@@ -86,28 +86,30 @@
8686
cacheFilesAttr: "[data-ajax-submit-cachefiles]",
8787
canSubmitFn: null,
8888
onRenderErrorFn: null,
89+
handleSubmitEvent: true,
8990
}, $.fn.djangoAjaxForms.defaults, options);
9091

9192
function DjangoAjaxForms($form)
9293
{
94+
this.$form = $form;
95+
this.$form.data('daf-data', this);
9396

94-
$form.data('daf-data', this);
95-
96-
var self = this,
97-
canSubmit = true;
97+
if (opts.handleSubmitEvent) {
98+
var self = this,
99+
canSubmit = true;
98100

99-
this.$form = $form;
100-
this.$form.on('submit', function(e) {
101-
e.preventDefault();
101+
this.$form.on('submit', function(e) {
102+
e.preventDefault();
102103

103-
if ( $.isFunction( opts.canSubmitFn ) ) {
104-
canSubmit = opts.canSubmitFn(self.$form);
105-
}
104+
if ( $.isFunction( opts.canSubmitFn ) ) {
105+
canSubmit = opts.canSubmitFn(self.$form);
106+
}
106107

107-
if (self.$form.length > 0 && canSubmit) {
108-
self.submit();
109-
}
110-
});
108+
if (self.$form.length > 0 && canSubmit) {
109+
self.submit();
110+
}
111+
});
112+
}
111113

112114
if (this.$form.filter(opts.cacheFilesAttr).length) {
113115
this.cachedFiles = new ManageCacheFile(this.$form);
@@ -122,7 +124,7 @@
122124
data: data,
123125
method: 'POST',
124126
dataType: 'json'
125-
}
127+
};
126128

127129
if ( !isCustomData ) {
128130
options.contentType = false;
@@ -200,6 +202,7 @@
200202
nonfielderror = true;
201203
} else {
202204
var $field = $form.find("#" + opts.fieldIdSelector + fieldName);
205+
203206
var onChange = function () {
204207
$field.removeClass('error', 200).find('.errorlist').fadeOut(200, function () {
205208
$(this).remove();
@@ -246,7 +249,12 @@
246249
} else if ( typeof options === 'object' || ! options ) {
247250
return this.each(function()
248251
{
249-
new DjangoAjaxForms($(this));
252+
var $this = $(this);
253+
var daf = $this.data('daf-data');
254+
255+
if (!daf) {
256+
new DjangoAjaxForms($this);
257+
}
250258
});
251259
} else {
252260
$.error( 'Method ' + options + ' does not exist.' );

0 commit comments

Comments
 (0)