Skip to content

Commit a4f767a

Browse files
committed
Now supporting optional-if-answered, victorjonsson#158
1 parent 92d827b commit a4f767a

29 files changed

+99
-46
lines changed

form-validator/brazil.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/date.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/file.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/html5.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/jquery.form-validator.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
/** File generated by Grunt -- do not modify
1818
* JQUERY-FORM-VALIDATOR
1919
*
20-
* @version 2.2.199
20+
* @version 2.2.200
2121
* @website http://formvalidator.net/
2222
* @author Victor Jonsson, http://victorjonsson.se
2323
* @license MIT

form-validator/jquery.form-validator.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/jsconf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/** File generated by Grunt -- do not modify
22
* JQUERY-FORM-VALIDATOR
33
*
4-
* @version 2.2.199
4+
* @version 2.2.200
55
* @website http://formvalidator.net/
66
* @author Victor Jonsson, http://victorjonsson.se
77
* @license MIT

form-validator/lang/cz.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/de.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/es.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/fr.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/it.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/pl.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/pt.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/ro.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/ru.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/lang/sv.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/location.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/logic.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/poland.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/sanitize.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/security.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/sweden.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/toggleDisabled.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

form-validator/uk.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

formvalidator.jquery.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"validation",
88
"validator"
99
],
10-
"version": "2.2.199",
10+
"version": "2.2.200",
1111
"author": {
1212
"name": "Victor Jonsson",
1313
"url": "http://victorjonsson.se",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "jquery-form-validator",
33
"description": "With this feature rich jQuery plugin it becomes easy to validate user input while keeping your HTML markup clean from javascript code. Even though this plugin has a wide range of validation functions it's designed to require as little bandwidth as possible. This is achieved by grouping together validation functions in \"modules\", making it possible for the programmer to load only those functions that's needed to validate a particular form.",
4-
"version": "2.2.199",
4+
"version": "2.2.200",
55
"main": "./form-validator/jquery.form-validator.min.js",
66
"keywords": [
77
"form",

src/modules/logic.js

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,42 +17,42 @@
1717

1818
var dependingOnBeforeValidation = function() {
1919

20-
var $elem = $(this),
21-
nameOfDependingInput = $elem.valAttr('depends-on') || $elem.valAttr('if-checked');
20+
var $input = $(this),
21+
inputHasValue = $.formUtils.getValue($input) ? true:false,
22+
nameOfDependingInput = $input.valAttr('depends-on') || $input.valAttr('if-checked');
2223

2324
// Whether or not this input should be validated depends on if another input has a value
2425
if (nameOfDependingInput) {
2526

2627
// Set the boolean telling us that the validation depends
2728
// on another input being checked
2829
var valueOfDependingInput = $.formUtils.getValue('[name="' + nameOfDependingInput + '"]', $form),
29-
requiredValueOfDependingInput = $elem.valAttr('depends-on-value'),
30+
requiredValueOfDependingInput = $input.valAttr('depends-on-value'),
3031
dependingInputIsMissingValueOrHasIncorrectValue = !valueOfDependingInput || (
3132
requiredValueOfDependingInput &&
3233
requiredValueOfDependingInput !== valueOfDependingInput
3334
);
3435

35-
if (dependingInputIsMissingValueOrHasIncorrectValue) {
36-
$elem.valAttr('skipped', '1');
36+
if (dependingInputIsMissingValueOrHasIncorrectValue && !inputHasValue) {
37+
$input.valAttr('skipped', '1');
3738
}
3839

3940
}
4041
},
4142
dependingOnValueChanged = function() {
4243
var $input = $(this),
44+
$otherInput = this.$dependingInput,
4345
valueOfDependingInput = $.formUtils.getValue($input),
4446
requiredValueOfDependingInput = $input.valAttr('depending-value'),
47+
otherInputHasValue = $.formUtils.getValue($otherInput) ? true:false,
4548
dependingInputIsMissingValueOrHasIncorrectValue = !valueOfDependingInput || (
4649
requiredValueOfDependingInput &&
4750
requiredValueOfDependingInput !== valueOfDependingInput
4851
);
4952

50-
if (dependingInputIsMissingValueOrHasIncorrectValue) {
51-
console.log(this.$dependingInput);
52-
$.formUtils.dialogs.removeInputStylingAndMessage(this.$dependingInput, conf);
53-
} else if ($.formUtils.getValue(this.$dependingInput)) {
54-
this.$dependingInput.validate();
55-
}
53+
if (dependingInputIsMissingValueOrHasIncorrectValue && !otherInputHasValue) {
54+
$.formUtils.dialogs.removeInputStylingAndMessage($otherInput, conf);
55+
}
5656
};
5757

5858
$form.find('[data-validation-depends-on]')
@@ -68,22 +68,22 @@
6868
.valAttr('depending-value', $dependingInput.valAttr('depends-on-value'));
6969

7070
this.$dependingInput = $dependingInput;
71-
71+
7272
});
7373

7474
});
7575

7676
},
77-
setupValidationTogetherWith = function($form) {
78-
$form.find('[data-validation-optional-if-answered]')
79-
.on('beforeValidation', function() {
77+
setupValidationTogetherWith = function($form, conf) {
78+
79+
var optionalBeforeValidation = function() {
8080
var $input = $(this),
81-
dependingInputs = $input.valAttr('optional-if-optional-if-answered'),
81+
dependingInputs = $input.valAttr('optional-if-answered'),
8282
dependingInputsHasValue = false,
8383
thisInputHasAnswer = $.formUtils.getValue($input) ? true:false;
8484

8585
if (!thisInputHasAnswer) {
86-
$.each($.split(dependingInputs), function(inputName) {
86+
$.each($.split(dependingInputs), function(i, inputName) {
8787
var $dependingInput = $form.find('[name="'+inputName+'"]');
8888
dependingInputsHasValue = $.formUtils.getValue($dependingInput) ? true:false;
8989
if (dependingInputsHasValue) {
@@ -95,7 +95,27 @@
9595
$input.valAttr('skipped', 1);
9696
}
9797
}
98+
},
99+
optionalInputOnChange = function() {
100+
var $input = $(this),
101+
dependingInputs = $input.valAttr('optional-if-answered');
98102

103+
$.each($.split(dependingInputs), function(i, inputName) {
104+
var $dependingInput = $form.find('[name="'+inputName+'"]'),
105+
dependingInputsHasValue = $.formUtils.getValue($dependingInput) ? true:false;
106+
if (!dependingInputsHasValue) {
107+
$.formUtils.dialogs.removeInputStylingAndMessage($dependingInput, conf);
108+
}
109+
});
110+
};
111+
112+
$form.find('[data-validation-optional-if-answered]')
113+
.off('beforeValidation', optionalBeforeValidation)
114+
.on('beforeValidation', optionalBeforeValidation)
115+
.each(function() {
116+
$(this)
117+
.off('change', optionalInputOnChange)
118+
.on('change', optionalInputOnChange);
99119
});
100120
};
101121

@@ -104,7 +124,7 @@
104124
$form = $('form');
105125
}
106126
setupValidationDependsOn($form, conf);
107-
setupValidationTogetherWith($form);
127+
setupValidationTogetherWith($form, conf);
108128
});
109129

110130
})(jQuery);

0 commit comments

Comments
 (0)