Skip to content

Commit 247703a

Browse files
authored
feat(formvalidation): size rule to test string length range
Added new size rule to check for a character length. It's a shortcut to avoid having 2 separate rules (minLength+maxLength)
1 parent e1559e8 commit 247703a

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

src/definitions/behaviors/form.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -536,9 +536,9 @@
536536
parts,
537537
suffixPrompt
538538
;
539-
if (ancillary && ['integer', 'decimal', 'number'].indexOf(ruleName) >= 0 && ancillary.indexOf('..') >= 0) {
539+
if (ancillary && ['integer', 'decimal', 'number', 'size'].indexOf(ruleName) >= 0 && ancillary.indexOf('..') >= 0) {
540540
parts = ancillary.split('..', 2);
541-
if (!rule.prompt) {
541+
if (!rule.prompt && ruleName !== 'size') {
542542
suffixPrompt = parts[0] === ''
543543
? settings.prompt.maxValue.replace(/{ruleValue}/g, '{max}')
544544
: (parts[1] === ''
@@ -1638,6 +1638,7 @@
16381638
minLength: '{name} must be at least {ruleValue} characters',
16391639
exactLength: '{name} must be exactly {ruleValue} characters',
16401640
maxLength: '{name} cannot be longer than {ruleValue} characters',
1641+
size: '{name} must have a length between {min} and {max} characters',
16411642
match: '{name} must match {ruleValue} field',
16421643
different: '{name} must have a different value than {ruleValue} field',
16431644
creditCard: '{name} must be a valid credit card number',
@@ -1799,7 +1800,7 @@
17991800
integer: function (value, range) {
18001801
return $.fn.form.settings.rules.range(value, range, 'integer');
18011802
},
1802-
range: function (value, range, regExp) {
1803+
range: function (value, range, regExp, testLength) {
18031804
if (typeof regExp === 'string') {
18041805
regExp = $.fn.form.settings.regExp[regExp];
18051806
}
@@ -1828,6 +1829,9 @@
18281829
max = parts[1] - 0;
18291830
}
18301831
}
1832+
if (testLength) {
1833+
value = value.length;
1834+
}
18311835

18321836
return (
18331837
regExp.test(value)
@@ -1913,24 +1917,22 @@
19131917
},
19141918

19151919
// is at least string length
1916-
minLength: function (value, requiredLength) {
1917-
return value !== undefined
1918-
? value.length >= requiredLength
1919-
: false;
1920+
minLength: function (value, minLength) {
1921+
return $.fn.form.settings.rules.range(value, minLength + '..', 'integer', true);
19201922
},
19211923

19221924
// is exactly length
19231925
exactLength: function (value, requiredLength) {
1924-
return value !== undefined
1925-
? value.length === Number(requiredLength)
1926-
: false;
1926+
return $.fn.form.settings.rules.range(value, requiredLength + '..' + requiredLength, 'integer', true);
19271927
},
19281928

19291929
// is less than length
19301930
maxLength: function (value, maxLength) {
1931-
return value !== undefined
1932-
? value.length <= maxLength
1933-
: false;
1931+
return $.fn.form.settings.rules.range(value, '..' + maxLength, 'integer', true);
1932+
},
1933+
1934+
size: function (value, range) {
1935+
return $.fn.form.settings.rules.range(value, range, 'integer', true);
19341936
},
19351937

19361938
// matches another field

0 commit comments

Comments
 (0)