Skip to content

Commit d75fd1d

Browse files
committed
toggleDisabled improved
1 parent fc15b0c commit d75fd1d

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/modules/toggleDisabled.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,28 @@
2727
},
2828
isCheckingIfFormValid = false;
2929

30-
$(window).bind('validatorsLoaded formValidationSetup', function(evt, $forms, conf) {
30+
$.formUtils.$win.bind('validatorsLoaded formValidationSetup', function(evt, $forms, conf) {
3131

3232
var $formsToDisable = conf.disabledFormFilter ? $forms.filter(conf.disabledFormFilter) : $forms,
33-
showErrorDialogs = conf.showErrorDialogs === undefined || conf.showErrorDialogs;
33+
showErrorDialogs = conf.showErrorDialogs === undefined || conf.showErrorDialogs,
34+
afterValidationCallback = function(evt, result, evtContext) {
35+
var $this = $(this);
36+
if (evtContext.indexOf('blur') > -1) {
37+
$this.unbind('afterValidation', afterValidationCallback);
38+
} else {
39+
if (result.isValid) {
40+
$this.unbind('afterValidation', afterValidationCallback);
41+
} else if (!$this.valAttr('have-been-blurred')) {
42+
result.shouldChangeDisplay = false;
43+
}
44+
}
45+
};
3446

3547
// Toggle form state depending on if it has only valid inputs or not.
3648
$formsToDisable
3749
.addClass(showErrorDialogs ? 'disabled-with-errors' : 'disabled-without-errors')
3850
.find('*[data-validation]')
39-
.attr('data-validation-event','keyup change')
51+
.valAttr('event','keyup change')
4052
.on('validation', function(evt, valid) {
4153
if( !isCheckingIfFormValid ) {
4254
isCheckingIfFormValid = true;
@@ -48,6 +60,10 @@
4860
}
4961
isCheckingIfFormValid = false;
5062
}
63+
})
64+
.on('afterValidation', afterValidationCallback)
65+
.on('blur', function() {
66+
$(this).valAttr('have-been-blurred', 1);
5167
});
5268

5369

0 commit comments

Comments
 (0)