5
5
* Documentation and issue tracking on Github <https://github.com/victorjonsson/jQuery-Form-Validator/>
6
6
*
7
7
* @license Dual licensed under the MIT or GPL Version 2 licenses
8
- * @version 1.9.4
8
+ * @version 1.9.7
9
9
*/
10
10
( function ( $ ) {
11
11
413
413
var loadModuleScripts = function ( modules , path ) {
414
414
$ . each ( modules . split ( ',' ) , function ( i , module ) {
415
415
var scriptUrl = path + $ . trim ( module ) + '.js' ;
416
- var doCache = scriptUrl . substr ( - 7 ) != '.dev.js' ;
417
416
$ . ajax ( {
418
417
url : scriptUrl ,
419
418
cache : scriptUrl . substr ( - 7 ) != '.dev.js' ,
1004
1003
errorMessageKey : 'requiredFields'
1005
1004
} ) ;
1006
1005
1007
- /*
1008
- * Validate min length
1009
- */
1010
- $ . formUtils . addValidator ( {
1011
- name : 'validate_min_length' ,
1012
- validate : function ( value , $el , config , language ) {
1013
- var validationRules = $el . attr ( config . validationRuleAttribute ) ;
1014
- var minLength = $ . formUtils . getAttributeInteger ( validationRules , 'length' ) ;
1015
- if ( value . length < minLength ) {
1016
- this . errorMessage = language . toShortStart + minLength + language . toShortEnd ;
1017
- return false ;
1018
- }
1019
- return true ;
1020
- } ,
1021
- errorMessage : '' ,
1022
- errorMessageKey : ''
1023
- } ) ;
1024
-
1025
- /*
1026
- * Validate max length
1027
- */
1028
- $ . formUtils . addValidator ( {
1029
- name : 'validate_max_length' ,
1030
- validate : function ( value , $el , config , language ) {
1031
- var validationRules = $el . attr ( config . validationRuleAttribute ) ;
1032
- var maxLength = $ . formUtils . getAttributeInteger ( validationRules , 'length' ) ;
1033
- if ( value . length > maxLength ) {
1034
- this . errorMessage = language . toLongStart + maxLength + language . toLongEnd ;
1035
- return false ;
1036
- }
1037
- return true ;
1038
- } ,
1039
- errorMessage : '' ,
1040
- errorMessageKey : ''
1041
- } ) ;
1042
-
1043
1006
/*
1044
1007
* Validate length range
1045
1008
*/
1046
1009
$ . formUtils . addValidator ( {
1047
1010
name : 'validate_length' ,
1048
1011
validate : function ( value , $el , config , language ) {
1049
- var validationRules = $el . attr ( config . validationRuleAttribute ) ;
1050
- var lengthRange = $ . formUtils . getAttributeInteger ( validationRules , 'length' ) ;
1051
- var range = lengthRange . split ( '-' ) ;
1052
- if ( value . length < parseInt ( range [ 0 ] , 10 ) || value . length > parseInt ( range [ 1 ] , 10 ) ) {
1053
- this . errorMessage = language . badLength + lengthRange + language . toLongEnd ;
1012
+ var len = $el . attr ( 'data-validation-length' ) ;
1013
+ var range = len . split ( '-' ) ;
1014
+
1015
+ // range
1016
+ if ( range . length == 2 && ( value . length < parseInt ( range [ 0 ] , 10 ) || value . length > parseInt ( range [ 1 ] , 10 ) ) ) {
1017
+ this . errorMessage = language . badLength + len + language . toLongEnd ;
1054
1018
return false ;
1055
1019
}
1020
+ else if ( len . indexOf ( 'min' ) === 0 ) {
1021
+ var minLength = parseInt ( len . substr ( 3 ) , 10 ) ;
1022
+ if ( minLength > value . length ) {
1023
+ this . errorMessage = language . toShortStart + minLength + language . toShortEnd ;
1024
+ return false ;
1025
+ }
1026
+ }
1027
+ else if ( len . indexOf ( 'max' ) === 0 ) {
1028
+ var maxLength = parseInt ( len . substr ( 3 ) , 10 ) ;
1029
+ if ( maxLength < value . length ) {
1030
+ this . errorMessage = language . toLongStart + maxLength + language . toLongEnd ;
1031
+ return false ;
1032
+ }
1033
+ }
1034
+ else {
1035
+ var elementType = $el . get ( 0 ) . nodeName ;
1036
+ alert ( 'Please add attribute "data-validation-length" to ' + elementType + ' named ' + $el . attr ( 'name' ) ) ;
1037
+ }
1038
+
1056
1039
return true ;
1057
1040
} ,
1058
1041
errorMessage : '' ,
1065
1048
$ . formUtils . addValidator ( {
1066
1049
name : 'validate_url' ,
1067
1050
validate : function ( url ) {
1068
- // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ but added support for arrays in the url ?arg[]=sdfsdf
1051
+ // written by Scott Gonzalez: http://projects.scottsplayground.com/iri/ but added support for arrays in the url ?arg[]=sdfsdf
1069
1052
var urlFilter = / ^ ( h t t p s | h t t p | f t p ) : \/ \/ ( ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : ) * @ ) ? ( ( ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) \. ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) \. ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) \. ( \d | [ 1 - 9 ] \d | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) ) | ( ( ( [ a - z ] | \d | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( ( [ a - z ] | \d | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) * ( [ a - z ] | \d | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ) ) \. ) + ( ( [ a - z ] | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( ( [ a - z ] | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) * ( [ a - z ] | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) ) ) \. ? ) ( : \d * ) ? ) ( \/ ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) + ( \/ ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) * ) * ) ? ) ? ( \? ( ( ( [ a - z ] | \d | \[ | \] | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) | [ \uE000 - \uF8FF ] | \/ | \? ) * ) ? ( \# ( ( ( [ a - z ] | \d | - | \. | _ | ~ | [ \u00A0 - \uD7FF \uF900 - \uFDCF \uFDF0 - \uFFEF ] ) | ( % [ \d a - f ] { 2 } ) | [ ! \$ & ' \( \) \* \+ , ; = ] | : | @ ) | \/ | \? ) * ) ? $ / i;
1070
1053
if ( urlFilter . test ( url ) ) {
1071
1054
var domain = url . split ( / ^ h t t p s | ^ h t t p | ^ f t p / i) [ 1 ] . replace ( '://' , '' ) ;
1086
1069
*/
1087
1070
$ . formUtils . addValidator ( {
1088
1071
name : 'validate_number' ,
1089
- validate : function ( val ) {
1090
- return $ . formUtils . validators . validate_int . validate ( val ) || $ . formUtils . validators . validate_float . validate ( val ) ;
1072
+ validate : function ( val , $el ) {
1073
+ if ( val !== '' ) {
1074
+ var allowing = $el . attr ( 'data-validation-allowing' ) ;
1075
+ if ( allowing === undefined )
1076
+ allowing = 'number' ;
1077
+
1078
+ if ( allowing . indexOf ( 'negative' ) > - 1 && val . indexOf ( '-' ) === 0 )
1079
+ val = val . substr ( 1 ) ;
1080
+
1081
+ if ( allowing . indexOf ( 'number' ) > - 1 && val . replace ( / [ 0 - 9 ] / g, '' ) === '' ) {
1082
+ return true ;
1083
+ }
1084
+ if ( allowing . indexOf ( 'float' ) > - 1 && val . match ( / ^ ( [ 0 - 9 ] + ) \. ( [ 0 - 9 ] + ) $ / ) !== null ) {
1085
+ return true ;
1086
+ }
1087
+ }
1088
+ return false ;
1091
1089
} ,
1092
1090
errorMessage : '' ,
1093
1091
errorMessageKey : 'badInt'
1099
1097
$ . formUtils . addValidator ( {
1100
1098
name : 'validate_custom' ,
1101
1099
validate : function ( val , $el , config ) {
1102
- var attr = $el . attr ( config . validationRuleAttribute ) ;
1103
- var regexp = new RegExp ( attr . split ( 'regexp/' ) [ 1 ] . split ( '/' ) [ 0 ] ) ;
1100
+ var regexp = new RegExp ( $el . attr ( 'data-validation-regexp' ) ) ;
1104
1101
return regexp . test ( val ) ;
1105
1102
} ,
1106
1103
errorMessage : '' ,
1107
1104
errorMessageKey : 'badCustomVal'
1108
1105
} ) ;
1109
1106
1110
- /*
1111
- * Validate integer
1112
- */
1113
- $ . formUtils . addValidator ( {
1114
- name : 'validate_int' ,
1115
- validate : function ( val ) {
1116
- return val !== '' && val . replace ( / [ 0 - 9 ] / g, '' ) === '' ;
1117
- } ,
1118
- errorMessage : '' ,
1119
- errorMessageKey : 'badInt'
1120
- } ) ;
1121
-
1122
- /*
1123
- * Validate floating number
1124
- */
1125
- $ . formUtils . addValidator ( {
1126
- name : 'validate_float' ,
1127
- validate : function ( val ) {
1128
- return val . match ( / ^ ( \- | ) ( [ 0 - 9 ] + ) \. ( [ 0 - 9 ] + ) $ / ) !== null ;
1129
- } ,
1130
- errorMessage : '' ,
1131
- errorMessageKey : 'badFloat'
1132
- } ) ;
1133
-
1134
1107
/*
1135
1108
* Validate date
1136
1109
*/
1151
1124
errorMessageKey : 'badDate'
1152
1125
} ) ;
1153
1126
1154
- /*
1155
- * Validate phone number, at least 7 digits only one hyphen and plus allowed
1156
- */
1157
- $ . formUtils . addValidator ( {
1158
- name : 'validate_phone' ,
1159
- validate : function ( tele ) {
1160
- var numPlus = tele . match ( / \+ / g) ;
1161
- var numHifen = tele . match ( / - / g) ;
1162
-
1163
- if ( ( numPlus !== null && numPlus . length > 1 ) || ( numHifen !== null && numHifen . length > 1 ) ) {
1164
- return false ;
1165
- }
1166
- if ( numPlus !== null && tele . indexOf ( '+' ) !== 0 ) {
1167
- return false ;
1168
- }
1169
-
1170
- tele = tele . replace ( / ( [ - | \+ ] ) / g, '' ) ;
1171
- return tele . length > 8 && tele . match ( / [ ^ 0 - 9 ] / g) === null ;
1172
- } ,
1173
- errorMessage : '' ,
1174
- errorMessageKey : 'badTelephone'
1175
- } ) ;
1176
-
1177
1127
} ) ( jQuery ) ;
0 commit comments