| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- (function($) {
- $.fn.bootstrapValidator.i18n.emailAddress = $.extend($.fn.bootstrapValidator.i18n.emailAddress || {}, {
- 'default': 'Please enter a valid email address'
- });
- $.fn.bootstrapValidator.validators.emailAddress = {
- html5Attributes: {
- message: 'message',
- multiple: 'multiple',
- separator: 'separator'
- },
- enableByHtml5: function($field) {
- return ('email' === $field.attr('type'));
- },
- /**
- * Return true if and only if the input value is a valid email address
- *
- * @param {BootstrapValidator} validator Validate plugin instance
- * @param {jQuery} $field Field element
- * @param {Object} [options]
- * - multiple: Allow multiple email addresses, separated by a comma or semicolon; default is false.
- * - separator: Regex for character or characters expected as separator between addresses; default is comma /[,;]/, i.e. comma or semicolon.
- * @returns {Boolean}
- */
- validate: function(validator, $field, options) {
- var value = $field.val();
- if (value === '') {
- return true;
- }
- // Email address regular expression
- // http://stackoverflow.com/questions/46155/validate-email-address-in-javascript
- var emailRegExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
- allowMultiple = options.multiple === true || options.multiple === 'true';
- if (allowMultiple) {
- var separator = options.separator || /[,;]/,
- addresses = this._splitEmailAddresses(value, separator);
- for (var i = 0; i < addresses.length; i++) {
- if (!emailRegExp.test(addresses[i])) {
- return false;
- }
- }
- return true;
- } else {
- return emailRegExp.test(value);
- }
- },
- _splitEmailAddresses: function(emailAddresses, separator) {
- var quotedFragments = emailAddresses.split(/"/),
- quotedFragmentCount = quotedFragments.length,
- emailAddressArray = [],
- nextEmailAddress = '';
- for (var i = 0; i < quotedFragmentCount; i++) {
- if (i % 2 === 0) {
- var splitEmailAddressFragments = quotedFragments[i].split(separator),
- splitEmailAddressFragmentCount = splitEmailAddressFragments.length;
- if (splitEmailAddressFragmentCount === 1) {
- nextEmailAddress += splitEmailAddressFragments[0];
- } else {
- emailAddressArray.push(nextEmailAddress + splitEmailAddressFragments[0]);
- for (var j = 1; j < splitEmailAddressFragmentCount - 1; j++) {
- emailAddressArray.push(splitEmailAddressFragments[j]);
- }
- nextEmailAddress = splitEmailAddressFragments[splitEmailAddressFragmentCount - 1];
- }
- } else {
- nextEmailAddress += '"' + quotedFragments[i];
- if (i < quotedFragmentCount - 1) {
- nextEmailAddress += '"';
- }
- }
- }
- emailAddressArray.push(nextEmailAddress);
- return emailAddressArray;
- }
- };
- }(window.jQuery));
|