bootstrap_validator_rails 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +32 -0
- data/lib/bootstrap_validator_rails/engine.rb +4 -0
- data/lib/bootstrap_validator_rails/version.rb +3 -0
- data/lib/bootstrap_validator_rails.rb +42 -0
- data/lib/tasks/bootstrap_validator_rails_tasks.rake +4 -0
- data/test/bootstrap_validator_rails_test.rb +13 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/post.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +82 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20140723124112_create_posts.rb +7 -0
- data/test/dummy/db/schema.rb +20 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/ENV=test.log +0 -0
- data/test/dummy/log/development.log +22 -0
- data/test/dummy/log/test.log +781 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/test_helper.rb +15 -0
- data/vendor/assets/javascripts/bootstrapValidator.js +1803 -0
- data/vendor/assets/javascripts/language/de_DE.js +326 -0
- data/vendor/assets/javascripts/language/en_US.js +327 -0
- data/vendor/assets/javascripts/language/es_CL.js +326 -0
- data/vendor/assets/javascripts/language/hu_HU.js +326 -0
- data/vendor/assets/javascripts/language/vi_VN.js +322 -0
- data/vendor/assets/javascripts/language/zh_CN.js +326 -0
- data/vendor/assets/javascripts/language/zh_TW.js +326 -0
- data/vendor/assets/javascripts/validator/base64.js +25 -0
- data/vendor/assets/javascripts/validator/between.js +66 -0
- data/vendor/assets/javascripts/validator/callback.js +40 -0
- data/vendor/assets/javascripts/validator/choice.js +68 -0
- data/vendor/assets/javascripts/validator/creditCard.js +103 -0
- data/vendor/assets/javascripts/validator/cusip.js +55 -0
- data/vendor/assets/javascripts/validator/cvv.js +116 -0
- data/vendor/assets/javascripts/validator/date.js +118 -0
- data/vendor/assets/javascripts/validator/different.js +41 -0
- data/vendor/assets/javascripts/validator/digits.js +24 -0
- data/vendor/assets/javascripts/validator/ean.js +40 -0
- data/vendor/assets/javascripts/validator/emailAddress.js +31 -0
- data/vendor/assets/javascripts/validator/file.js +69 -0
- data/vendor/assets/javascripts/validator/greaterThan.js +61 -0
- data/vendor/assets/javascripts/validator/grid.js +37 -0
- data/vendor/assets/javascripts/validator/hex.js +25 -0
- data/vendor/assets/javascripts/validator/hexColor.js +28 -0
- data/vendor/assets/javascripts/validator/iban.js +246 -0
- data/vendor/assets/javascripts/validator/id.js +815 -0
- data/vendor/assets/javascripts/validator/identical.js +40 -0
- data/vendor/assets/javascripts/validator/imei.js +44 -0
- data/vendor/assets/javascripts/validator/integer.js +28 -0
- data/vendor/assets/javascripts/validator/ip.js +48 -0
- data/vendor/assets/javascripts/validator/isbn.js +86 -0
- data/vendor/assets/javascripts/validator/isin.js +59 -0
- data/vendor/assets/javascripts/validator/ismn.js +59 -0
- data/vendor/assets/javascripts/validator/issn.js +46 -0
- data/vendor/assets/javascripts/validator/lessThan.js +61 -0
- data/vendor/assets/javascripts/validator/mac.js +25 -0
- data/vendor/assets/javascripts/validator/notEmpty.js +32 -0
- data/vendor/assets/javascripts/validator/numeric.js +39 -0
- data/vendor/assets/javascripts/validator/phone.js +84 -0
- data/vendor/assets/javascripts/validator/regexp.js +42 -0
- data/vendor/assets/javascripts/validator/remote.js +70 -0
- data/vendor/assets/javascripts/validator/rtn.js +38 -0
- data/vendor/assets/javascripts/validator/sedol.js +40 -0
- data/vendor/assets/javascripts/validator/siren.js +28 -0
- data/vendor/assets/javascripts/validator/siret.js +38 -0
- data/vendor/assets/javascripts/validator/step.js +64 -0
- data/vendor/assets/javascripts/validator/stringCase.js +36 -0
- data/vendor/assets/javascripts/validator/stringLength.js +81 -0
- data/vendor/assets/javascripts/validator/uri.js +101 -0
- data/vendor/assets/javascripts/validator/uuid.js +46 -0
- data/vendor/assets/javascripts/validator/vat.js +1220 -0
- data/vendor/assets/javascripts/validator/vin.js +49 -0
- data/vendor/assets/javascripts/validator/zipCode.js +162 -0
- data/vendor/assets/stylesheets/bootstrapValidator.css +21 -0
- metadata +233 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.regexp = $.extend($.fn.bootstrapValidator.i18n.regexp || {}, {
|
|
3
|
+
'default': 'Please enter a value matching the pattern'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.regexp = {
|
|
7
|
+
html5Attributes: {
|
|
8
|
+
message: 'message',
|
|
9
|
+
regexp: 'regexp'
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
enableByHtml5: function($field) {
|
|
13
|
+
var pattern = $field.attr('pattern');
|
|
14
|
+
if (pattern) {
|
|
15
|
+
return {
|
|
16
|
+
regexp: pattern
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return false;
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Check if the element value matches given regular expression
|
|
25
|
+
*
|
|
26
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
27
|
+
* @param {jQuery} $field Field element
|
|
28
|
+
* @param {Object} options Consists of the following key:
|
|
29
|
+
* - regexp: The regular expression you need to check
|
|
30
|
+
* @returns {Boolean}
|
|
31
|
+
*/
|
|
32
|
+
validate: function(validator, $field, options) {
|
|
33
|
+
var value = $field.val();
|
|
34
|
+
if (value === '') {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var regexp = ('string' === typeof options.regexp) ? new RegExp(options.regexp) : options.regexp;
|
|
39
|
+
return regexp.test(value);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.remote = $.extend($.fn.bootstrapValidator.i18n.remote || {}, {
|
|
3
|
+
'default': 'Please enter a valid value'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.remote = {
|
|
7
|
+
html5Attributes: {
|
|
8
|
+
message: 'message',
|
|
9
|
+
url: 'url',
|
|
10
|
+
name: 'name'
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Request a remote server to check the input value
|
|
15
|
+
*
|
|
16
|
+
* @param {BootstrapValidator} validator Plugin instance
|
|
17
|
+
* @param {jQuery} $field Field element
|
|
18
|
+
* @param {Object} options Can consist of the following keys:
|
|
19
|
+
* - url {String|Function}
|
|
20
|
+
* - type {String} [optional] Can be GET or POST (default)
|
|
21
|
+
* - data {Object|Function} [optional]: By default, it will take the value
|
|
22
|
+
* {
|
|
23
|
+
* <fieldName>: <fieldValue>
|
|
24
|
+
* }
|
|
25
|
+
* - name {String} [optional]: Override the field name for the request.
|
|
26
|
+
* - message: The invalid message
|
|
27
|
+
* @returns {Boolean|Deferred}
|
|
28
|
+
*/
|
|
29
|
+
validate: function(validator, $field, options) {
|
|
30
|
+
var value = $field.val();
|
|
31
|
+
if (value === '') {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var name = $field.attr('data-bv-field'),
|
|
36
|
+
data = options.data || {},
|
|
37
|
+
url = options.url,
|
|
38
|
+
type = options.type || 'POST';
|
|
39
|
+
|
|
40
|
+
// Support dynamic data
|
|
41
|
+
if ('function' === typeof data) {
|
|
42
|
+
data = data.call(this, validator);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Support dynamic url
|
|
46
|
+
if ('function' === typeof url) {
|
|
47
|
+
url = url.call(this, validator);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
data[options.name || name] = value;
|
|
51
|
+
|
|
52
|
+
var dfd = new $.Deferred();
|
|
53
|
+
var xhr = $.ajax({
|
|
54
|
+
type: type,
|
|
55
|
+
url: url,
|
|
56
|
+
dataType: 'json',
|
|
57
|
+
data: data
|
|
58
|
+
});
|
|
59
|
+
xhr.then(function(response) {
|
|
60
|
+
dfd.resolve($field, 'remote', response.valid === true || response.valid === 'true', response.message ? response.message : null);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
dfd.fail(function() {
|
|
64
|
+
xhr.abort();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
return dfd;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.rtn = $.extend($.fn.bootstrapValidator.i18n.rtn || {}, {
|
|
3
|
+
'default': 'Please enter a valid RTN number'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.rtn = {
|
|
7
|
+
/**
|
|
8
|
+
* Validate a RTN (Routing transit number)
|
|
9
|
+
* Examples:
|
|
10
|
+
* - Valid: 021200025, 789456124
|
|
11
|
+
*
|
|
12
|
+
* @see http://en.wikipedia.org/wiki/Routing_transit_number
|
|
13
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
14
|
+
* @param {jQuery} $field Field element
|
|
15
|
+
* @param {Object} options Can consist of the following keys:
|
|
16
|
+
* - message: The invalid message
|
|
17
|
+
* @returns {Boolean}
|
|
18
|
+
*/
|
|
19
|
+
validate: function(validator, $field, options) {
|
|
20
|
+
var value = $field.val();
|
|
21
|
+
if (value === '') {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!/^\d{9}$/.test(value)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var sum = 0;
|
|
30
|
+
for (var i = 0; i < value.length; i += 3) {
|
|
31
|
+
sum += parseInt(value.charAt(i), 10) * 3
|
|
32
|
+
+ parseInt(value.charAt(i + 1), 10) * 7
|
|
33
|
+
+ parseInt(value.charAt(i + 2), 10);
|
|
34
|
+
}
|
|
35
|
+
return (sum !== 0 && sum % 10 === 0);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.sedol = $.extend($.fn.bootstrapValidator.i18n.sedol || {}, {
|
|
3
|
+
'default': 'Please enter a valid SEDOL number'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.sedol = {
|
|
7
|
+
/**
|
|
8
|
+
* Validate a SEDOL (Stock Exchange Daily Official List)
|
|
9
|
+
* Examples:
|
|
10
|
+
* - Valid: 0263494, B0WNLY7
|
|
11
|
+
*
|
|
12
|
+
* @see http://en.wikipedia.org/wiki/SEDOL
|
|
13
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
14
|
+
* @param {jQuery} $field Field element
|
|
15
|
+
* @param {Object} options Can consist of the following keys:
|
|
16
|
+
* - message: The invalid message
|
|
17
|
+
* @returns {Boolean}
|
|
18
|
+
*/
|
|
19
|
+
validate: function(validator, $field, options) {
|
|
20
|
+
var value = $field.val();
|
|
21
|
+
if (value === '') {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
value = value.toUpperCase();
|
|
26
|
+
if (!/^[0-9A-Z]{7}$/.test(value)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var sum = 0,
|
|
31
|
+
weight = [1, 3, 1, 7, 3, 9, 1],
|
|
32
|
+
length = value.length;
|
|
33
|
+
for (var i = 0; i < length - 1; i++) {
|
|
34
|
+
sum += weight[i] * parseInt(value.charAt(i), 36);
|
|
35
|
+
}
|
|
36
|
+
sum = (10 - sum % 10) % 10;
|
|
37
|
+
return sum + '' === value.charAt(length - 1);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.siren = $.extend($.fn.bootstrapValidator.i18n.siren || {}, {
|
|
3
|
+
'default': 'Please enter a valid SIREN number'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.siren = {
|
|
7
|
+
/**
|
|
8
|
+
* Check if a string is a siren number
|
|
9
|
+
*
|
|
10
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
11
|
+
* @param {jQuery} $field Field element
|
|
12
|
+
* @param {Object} options Consist of key:
|
|
13
|
+
* - message: The invalid message
|
|
14
|
+
* @returns {Boolean}
|
|
15
|
+
*/
|
|
16
|
+
validate: function(validator, $field, options) {
|
|
17
|
+
var value = $field.val();
|
|
18
|
+
if (value === '') {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!/^\d{9}$/.test(value)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return $.fn.bootstrapValidator.helpers.luhn(value);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.siret = $.extend($.fn.bootstrapValidator.i18n.siret || {}, {
|
|
3
|
+
'default': 'Please enter a valid SIRET number'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.siret = {
|
|
7
|
+
/**
|
|
8
|
+
* Check if a string is a siret number
|
|
9
|
+
*
|
|
10
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
11
|
+
* @param {jQuery} $field Field element
|
|
12
|
+
* @param {Object} options Consist of key:
|
|
13
|
+
* - message: The invalid message
|
|
14
|
+
* @returns {Boolean}
|
|
15
|
+
*/
|
|
16
|
+
validate: function(validator, $field, options) {
|
|
17
|
+
var value = $field.val();
|
|
18
|
+
if (value === '') {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var sum = 0,
|
|
23
|
+
length = value.length,
|
|
24
|
+
tmp;
|
|
25
|
+
for (var i = 0; i < length; i++) {
|
|
26
|
+
tmp = parseInt(value.charAt(i), 10);
|
|
27
|
+
if ((i % 2) === 0) {
|
|
28
|
+
tmp = tmp * 2;
|
|
29
|
+
if (tmp > 9) {
|
|
30
|
+
tmp -= 9;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
sum += tmp;
|
|
34
|
+
}
|
|
35
|
+
return (sum % 10 === 0);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.step = $.extend($.fn.bootstrapValidator.i18n.step || {}, {
|
|
3
|
+
'default': 'Please enter a valid step of %s'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.step = {
|
|
7
|
+
html5Attributes: {
|
|
8
|
+
message: 'message',
|
|
9
|
+
base: 'baseValue',
|
|
10
|
+
step: 'step'
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Return true if the input value is valid step one
|
|
15
|
+
*
|
|
16
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
17
|
+
* @param {jQuery} $field Field element
|
|
18
|
+
* @param {Object} options Can consist of the following keys:
|
|
19
|
+
* - baseValue: The base value
|
|
20
|
+
* - step: The step
|
|
21
|
+
* - message: The invalid message
|
|
22
|
+
* @returns {Boolean|Object}
|
|
23
|
+
*/
|
|
24
|
+
validate: function(validator, $field, options) {
|
|
25
|
+
var value = $field.val();
|
|
26
|
+
if (value === '') {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
options = $.extend({}, { baseValue: 0, step: 1 }, options);
|
|
31
|
+
value = parseFloat(value);
|
|
32
|
+
if (!$.isNumeric(value)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var round = function(x, precision) {
|
|
37
|
+
var m = Math.pow(10, precision);
|
|
38
|
+
x = x * m;
|
|
39
|
+
var sign = (x > 0) | -(x < 0),
|
|
40
|
+
isHalf = (x % 1 === 0.5 * sign);
|
|
41
|
+
if (isHalf) {
|
|
42
|
+
return (Math.floor(x) + (sign > 0)) / m;
|
|
43
|
+
} else {
|
|
44
|
+
return Math.round(x) / m;
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
floatMod = function(x, y) {
|
|
48
|
+
if (y === 0.0) {
|
|
49
|
+
return 1.0;
|
|
50
|
+
}
|
|
51
|
+
var dotX = (x + '').split('.'),
|
|
52
|
+
dotY = (y + '').split('.'),
|
|
53
|
+
precision = ((dotX.length === 1) ? 0 : dotX[1].length) + ((dotY.length === 1) ? 0 : dotY[1].length);
|
|
54
|
+
return round(x - y * Math.floor(x / y), precision);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var mod = floatMod(value - options.baseValue, options.step);
|
|
58
|
+
return {
|
|
59
|
+
valid: mod === 0.0 || mod === options.step,
|
|
60
|
+
message: $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.step['default'], [options.step])
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.stringCase = $.extend($.fn.bootstrapValidator.i18n.stringCase || {}, {
|
|
3
|
+
'default': 'Please enter only lowercase characters',
|
|
4
|
+
upper: 'Please enter only uppercase characters'
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
$.fn.bootstrapValidator.validators.stringCase = {
|
|
8
|
+
html5Attributes: {
|
|
9
|
+
message: 'message',
|
|
10
|
+
'case': 'case'
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Check if a string is a lower or upper case one
|
|
15
|
+
*
|
|
16
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
17
|
+
* @param {jQuery} $field Field element
|
|
18
|
+
* @param {Object} options Consist of key:
|
|
19
|
+
* - message: The invalid message
|
|
20
|
+
* - case: Can be 'lower' (default) or 'upper'
|
|
21
|
+
* @returns {Object}
|
|
22
|
+
*/
|
|
23
|
+
validate: function(validator, $field, options) {
|
|
24
|
+
var value = $field.val();
|
|
25
|
+
if (value === '') {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var stringCase = (options['case'] || 'lower').toLowerCase();
|
|
30
|
+
return {
|
|
31
|
+
valid: ('upper' === stringCase) ? value === value.toUpperCase() : value === value.toLowerCase(),
|
|
32
|
+
message: options.message || (('upper' === stringCase) ? $.fn.bootstrapValidator.i18n.stringCase.upper : $.fn.bootstrapValidator.i18n.stringCase['default'])
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.stringLength = $.extend($.fn.bootstrapValidator.i18n.stringLength || {}, {
|
|
3
|
+
'default': 'Please enter a value with valid length',
|
|
4
|
+
less: 'Please enter less than %s characters',
|
|
5
|
+
more: 'Please enter more than %s characters',
|
|
6
|
+
between: 'Please enter value between %s and %s characters long'
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
$.fn.bootstrapValidator.validators.stringLength = {
|
|
10
|
+
html5Attributes: {
|
|
11
|
+
message: 'message',
|
|
12
|
+
min: 'min',
|
|
13
|
+
max: 'max'
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
enableByHtml5: function($field) {
|
|
17
|
+
var maxLength = $field.attr('maxlength');
|
|
18
|
+
if (maxLength) {
|
|
19
|
+
return {
|
|
20
|
+
max: parseInt(maxLength, 10)
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return false;
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Check if the length of element value is less or more than given number
|
|
29
|
+
*
|
|
30
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
31
|
+
* @param {jQuery} $field Field element
|
|
32
|
+
* @param {Object} options Consists of following keys:
|
|
33
|
+
* - min
|
|
34
|
+
* - max
|
|
35
|
+
* At least one of two keys is required
|
|
36
|
+
* The min, max keys define the number which the field value compares to. min, max can be
|
|
37
|
+
* - A number
|
|
38
|
+
* - Name of field which its value defines the number
|
|
39
|
+
* - Name of callback function that returns the number
|
|
40
|
+
* - A callback function that returns the number
|
|
41
|
+
*
|
|
42
|
+
* - message: The invalid message
|
|
43
|
+
* @returns {Object}
|
|
44
|
+
*/
|
|
45
|
+
validate: function(validator, $field, options) {
|
|
46
|
+
var value = $field.val();
|
|
47
|
+
if (value === '') {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var min = $.isNumeric(options.min) ? options.min : validator.getDynamicOption($field, options.min),
|
|
52
|
+
max = $.isNumeric(options.max) ? options.max : validator.getDynamicOption($field, options.max),
|
|
53
|
+
length = value.length,
|
|
54
|
+
isValid = true,
|
|
55
|
+
message = options.message || $.fn.bootstrapValidator.i18n.stringLength['default'];
|
|
56
|
+
|
|
57
|
+
if ((min && length < parseInt(min, 10)) || (max && length > parseInt(max, 10))) {
|
|
58
|
+
isValid = false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
switch (true) {
|
|
62
|
+
case (!!min && !!max):
|
|
63
|
+
message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.stringLength.between, [parseInt(min, 10), parseInt(max, 10)]);
|
|
64
|
+
break;
|
|
65
|
+
|
|
66
|
+
case (!!min):
|
|
67
|
+
message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.stringLength.more, parseInt(min, 10));
|
|
68
|
+
break;
|
|
69
|
+
|
|
70
|
+
case (!!max):
|
|
71
|
+
message = $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.stringLength.less, parseInt(max, 10));
|
|
72
|
+
break;
|
|
73
|
+
|
|
74
|
+
default:
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return { valid: isValid, message: message };
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.uri = $.extend($.fn.bootstrapValidator.i18n.uri || {}, {
|
|
3
|
+
'default': 'Please enter a valid URI'
|
|
4
|
+
});
|
|
5
|
+
|
|
6
|
+
$.fn.bootstrapValidator.validators.uri = {
|
|
7
|
+
html5Attributes: {
|
|
8
|
+
message: 'message',
|
|
9
|
+
allowlocal: 'allowLocal'
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
enableByHtml5: function($field) {
|
|
13
|
+
return ('url' === $field.attr('type'));
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Return true if the input value is a valid URL
|
|
18
|
+
*
|
|
19
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
20
|
+
* @param {jQuery} $field Field element
|
|
21
|
+
* @param {Object} options
|
|
22
|
+
* - message: The error message
|
|
23
|
+
* - allowLocal: Allow the private and local network IP. Default to false
|
|
24
|
+
* @returns {Boolean}
|
|
25
|
+
*/
|
|
26
|
+
validate: function(validator, $field, options) {
|
|
27
|
+
var value = $field.val();
|
|
28
|
+
if (value === '') {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Credit to https://gist.github.com/dperini/729294
|
|
33
|
+
//
|
|
34
|
+
// Regular Expression for URL validation
|
|
35
|
+
//
|
|
36
|
+
// Author: Diego Perini
|
|
37
|
+
// Updated: 2010/12/05
|
|
38
|
+
//
|
|
39
|
+
// the regular expression composed & commented
|
|
40
|
+
// could be easily tweaked for RFC compliance,
|
|
41
|
+
// it was expressly modified to fit & satisfy
|
|
42
|
+
// these test for an URL shortener:
|
|
43
|
+
//
|
|
44
|
+
// http://mathiasbynens.be/demo/url-regex
|
|
45
|
+
//
|
|
46
|
+
// Notes on possible differences from a standard/generic validation:
|
|
47
|
+
//
|
|
48
|
+
// - utf-8 char class take in consideration the full Unicode range
|
|
49
|
+
// - TLDs have been made mandatory so single names like "localhost" fails
|
|
50
|
+
// - protocols have been restricted to ftp, http and https only as requested
|
|
51
|
+
//
|
|
52
|
+
// Changes:
|
|
53
|
+
//
|
|
54
|
+
// - IP address dotted notation validation, range: 1.0.0.0 - 223.255.255.255
|
|
55
|
+
// first and last IP address of each class is considered invalid
|
|
56
|
+
// (since they are broadcast/network addresses)
|
|
57
|
+
//
|
|
58
|
+
// - Added exclusion of private, reserved and/or local networks ranges
|
|
59
|
+
//
|
|
60
|
+
var allowLocal = options.allowLocal === true || options.allowLocal === 'true',
|
|
61
|
+
urlExp = new RegExp(
|
|
62
|
+
"^" +
|
|
63
|
+
// protocol identifier
|
|
64
|
+
"(?:(?:https?|ftp)://)" +
|
|
65
|
+
// user:pass authentication
|
|
66
|
+
"(?:\\S+(?::\\S*)?@)?" +
|
|
67
|
+
"(?:" +
|
|
68
|
+
// IP address exclusion
|
|
69
|
+
// private & local networks
|
|
70
|
+
(allowLocal
|
|
71
|
+
? ''
|
|
72
|
+
: ("(?!(?:10|127)(?:\\.\\d{1,3}){3})" +
|
|
73
|
+
"(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})" +
|
|
74
|
+
"(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})")) +
|
|
75
|
+
// IP address dotted notation octets
|
|
76
|
+
// excludes loopback network 0.0.0.0
|
|
77
|
+
// excludes reserved space >= 224.0.0.0
|
|
78
|
+
// excludes network & broadcast addresses
|
|
79
|
+
// (first & last IP address of each class)
|
|
80
|
+
"(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" +
|
|
81
|
+
"(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" +
|
|
82
|
+
"(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" +
|
|
83
|
+
"|" +
|
|
84
|
+
// host name
|
|
85
|
+
"(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)" +
|
|
86
|
+
// domain name
|
|
87
|
+
"(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*" +
|
|
88
|
+
// TLD identifier
|
|
89
|
+
"(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" +
|
|
90
|
+
")" +
|
|
91
|
+
// port number
|
|
92
|
+
"(?::\\d{2,5})?" +
|
|
93
|
+
// resource path
|
|
94
|
+
"(?:/[^\\s]*)?" +
|
|
95
|
+
"$", "i"
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
return urlExp.test(value);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}(window.jQuery));
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
$.fn.bootstrapValidator.i18n.uuid = $.extend($.fn.bootstrapValidator.i18n.uuid || {}, {
|
|
3
|
+
'default': 'Please enter a valid UUID number',
|
|
4
|
+
version: 'Please enter a valid UUID version %s number'
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
$.fn.bootstrapValidator.validators.uuid = {
|
|
8
|
+
html5Attributes: {
|
|
9
|
+
message: 'message',
|
|
10
|
+
version: 'version'
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Return true if and only if the input value is a valid UUID string
|
|
15
|
+
*
|
|
16
|
+
* @see http://en.wikipedia.org/wiki/Universally_unique_identifier
|
|
17
|
+
* @param {BootstrapValidator} validator The validator plugin instance
|
|
18
|
+
* @param {jQuery} $field Field element
|
|
19
|
+
* @param {Object} options Consist of key:
|
|
20
|
+
* - message: The invalid message
|
|
21
|
+
* - version: Can be 3, 4, 5, null
|
|
22
|
+
* @returns {Boolean|Object}
|
|
23
|
+
*/
|
|
24
|
+
validate: function(validator, $field, options) {
|
|
25
|
+
var value = $field.val();
|
|
26
|
+
if (value === '') {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// See the format at http://en.wikipedia.org/wiki/Universally_unique_identifier#Variants_and_versions
|
|
31
|
+
var patterns = {
|
|
32
|
+
'3': /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
|
|
33
|
+
'4': /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
|
|
34
|
+
'5': /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
|
|
35
|
+
all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
|
|
36
|
+
},
|
|
37
|
+
version = options.version ? (options.version + '') : 'all';
|
|
38
|
+
return {
|
|
39
|
+
valid: (null === patterns[version]) ? true : patterns[version].test(value),
|
|
40
|
+
message: options.version
|
|
41
|
+
? $.fn.bootstrapValidator.helpers.format(options.message || $.fn.bootstrapValidator.i18n.uuid.version, options.version)
|
|
42
|
+
: (options.message || $.fn.bootstrapValidator.i18n.uuid['default'])
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}(window.jQuery));
|