Skip to content

Commit

Permalink
Extension: uniqueForm.ajax.js
Browse files Browse the repository at this point in the history
Unique form

- zamezí duplicitnímu odeslání ajaxového formuláře
 - dvojklik
 - dlouhotrvající request, kdy uživatel zkusí formulář odeslat znovu
 - pokud je navěšené odeslání po změně hodnoty inputu, tak po změně a potvrzení enterem dochází jak k odeslání formuláře enterem a zároveň přes event
  • Loading branch information
vitkutny authored Nov 30, 2016
1 parent fc7bac7 commit 02e9b9e
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions extensions/uniqueForm.ajax.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
(function ($) {
/**
* @author Vít Kutný
*
* Unique form
* - zamezí duplicitnímu odeslání ajaxového formuláře
* - dvojklik
* - dlouhotrvající request, kdy uživatel zkusí formulář odeslat znovu
* - pokud je navěšené odeslání po změně hodnoty inputu, tak po změně a potvrzení enterem dochází jak k odeslání formuláře enterem a zároveň přes event
*/
$.nette.ext('uniqueForm', {
start: function (xhr, settings) {
if ('nette' in settings && 'form' in settings.nette && settings.nette.form) {
settings.nette.form
.bind('submit', this.formSubmitHandler)
.find(this.inputSubmitSelector).each(this.inputSubmitBeforeHandler)
;
}
},
complete: function (xhr, status, settings) {
if ('nette' in settings && 'form' in settings.nette && settings.nette.form) {
settings.nette.form
.unbind('submit', this.formSubmitHandler)
.find(this.inputSubmitSelector).each(this.inputSubmitAfterHandler)
;
}
}
}, {
formSubmitHandler: function () {
return false;
},
inputSubmitSelector: 'input[type=submit], button[type=submit], input[type=image]',
inputSubmitBeforeHandler: function () {
var $this = $(this);
if (!$this.prop('disabled')) {
//disable not disabled inputs
$this.data('uniqueFormDisabled', true);
$this.prop('disabled', true);
}
},
inputSubmitAfterHandler: function () {
var $this = $(this);
if ($this.data('uniqueFormDisabled')) {
//enable inputs disabled by this extension
$this.prop('disabled', false);
$this.removeData('uniqueFormDisabled');
}
}
});
})(jQuery);

0 comments on commit 02e9b9e

Please sign in to comment.