3
3
* ------------------------------------------
4
4
* Created by Victor Jonsson <http://www.victorjonsson.se>
5
5
* Documentation and issue tracking on Github <https://github.com/victorjonsson/jQuery-Form-Validator/>
6
- * Available for download at jQuery.com <http://plugins.jquery.com/project/jQueryFormValidtor/>
7
6
*
8
- * $license Creative Commons Erkännande-DelaLika 3.0 Unported License <http://creativecommons.org/ licenses/by-sa/3.0/>
9
- * $version 1.3.beta
10
- * $stable 1.2 (https://github.com/victorjonsson/jQuery-Form-Validator/zipball/v1.2)
7
+ * Dual licensed under the MIT or GPL Version 2 licenses
8
+ *
9
+ * $version 1.3
11
10
*/
12
11
( function ( $ ) {
13
12
$ . extend ( $ . fn , {
35
34
* @return {jQuery }
36
35
*/
37
36
showHelpOnFocus : function ( attrName ) {
38
- if ( typeof attrName === 'undefined' ) {
37
+ if ( ! attrName ) {
39
38
attrName = 'data-help' ;
40
39
}
41
40
45
44
$ ( this )
46
45
. focus ( function ( ) {
47
46
var $element = $ ( this ) ;
48
- if ( $element . parent ( ) . find ( '.jquery_form_help' ) . length === 0 ) {
47
+ if ( $element . parent ( ) . find ( '.jquery_form_help' ) . length == 0 ) {
49
48
$element . after (
50
49
$ ( '<span />' )
51
50
. addClass ( 'jquery_form_help' )
78
77
* @return {jQuery }
79
78
*/
80
79
doValidate : function ( language , settings , attachKeyupEvent ) {
81
- if ( typeof attachKeyupEvent === 'undefined' ) {
80
+ if ( typeof attachKeyupEvent == 'undefined' ) {
82
81
attachKeyupEvent = true ;
83
82
}
84
83
219
218
//
220
219
$form . find ( 'input[type=radio]' ) . each ( function ( ) {
221
220
var validationRule = $ ( this ) . attr ( config . validationRuleAttribute ) ;
222
- if ( typeof validationRule !== 'undefined' && validationRule === 'required' ) {
221
+ if ( typeof validationRule != 'undefined' && validationRule === 'required' ) {
223
222
var radioButtonName = $ ( this ) . attr ( 'name' ) ;
224
223
var isChecked = false ;
225
224
$form . find ( 'input[name=' + radioButtonName + ']' ) . each ( function ( ) {
242
241
if ( ! ignoreInput ( $ ( this ) . attr ( 'name' ) , $ ( this ) . attr ( 'type' ) ) ) {
243
242
244
243
// memorize border color
245
- if ( jQueryFormUtils . defaultBorderColor === null && $ ( this ) . attr ( 'type' ) === 'text' ) {
244
+ if ( jQueryFormUtils . defaultBorderColor === null && $ ( this ) . attr ( 'type' ) ) {
246
245
jQueryFormUtils . defaultBorderColor = $ ( this ) . css ( 'border-color' ) ;
247
246
}
248
247
@@ -351,7 +350,7 @@ jQueryFormUtils.validateEmail = function(email) {
351
350
var emailFilter = / ^ ( [ a - z A - Z 0 - 9 _ \. \- ] ) + @ ( ( [ a - z A - Z 0 - 9 \- ] ) + \. ) + ( [ a - z A - Z 0 - 9 ] { 2 , 4 } ) + $ / ;
352
351
if ( emailFilter . test ( email ) ) {
353
352
var parts = email . split ( '@' ) ;
354
- if ( parts . length === 2 ) {
353
+ if ( parts . length == 2 ) {
355
354
return jQueryFormUtils . validateDomain ( parts [ 1 ] ) ;
356
355
}
357
356
}
@@ -392,9 +391,9 @@ jQueryFormUtils.validateSwedishMobileNumber = function(number) {
392
391
number = number . replace ( / [ ^ 0 - 9 ] / g, '' ) ;
393
392
var begin = number . substring ( 0 , 3 ) ;
394
393
395
- if ( number . length !== 10 && begin !== '467' ) {
394
+ if ( number . length != 10 && begin !== '467' ) {
396
395
return false ;
397
- } else if ( number . length !== 11 && begin === '467' ) {
396
+ } else if ( number . length != 11 && begin === '467' ) {
398
397
return false ;
399
398
}
400
399
return ( / 0 7 [ 0 - 9 { 1 } ] / ) . test ( begin ) || ( begin === '467' && number . substr ( 3 , 1 ) === '0' ) ;
@@ -711,8 +710,7 @@ jQueryFormUtils.validateDomain = function(val) {
711
710
'nls' ) ;
712
711
713
712
for ( var j = 0 ; j < ukarr . length ; j ++ ) {
714
- if ( ukarr [ j ] === tld2 )
715
- {
713
+ if ( ukarr [ j ] === tld2 ) {
716
714
hasTopDomain = true ;
717
715
break ;
718
716
}
@@ -763,7 +761,7 @@ jQueryFormUtils.validateInput = function(el, language, config, form) {
763
761
var value = jQuery . trim ( el . val ( ) ) ;
764
762
var validationRules = el . attr ( config . validationRuleAttribute ) ;
765
763
766
- if ( typeof validationRules !== 'undefined' && validationRules !== null ) {
764
+ if ( typeof validationRules != 'undefined' && validationRules !== null ) {
767
765
768
766
/**
769
767
* <input data-validation="length12" /> => getAttribute($(element).attr('class'), 'length') = 12
@@ -873,7 +871,7 @@ jQueryFormUtils.validateInput = function(el, language, config, form) {
873
871
}
874
872
875
873
// confirmation
876
- if ( validationRules . indexOf ( 'validate_confirmation' ) > - 1 && typeof ( form ) !== 'undefined' ) {
874
+ if ( validationRules . indexOf ( 'validate_confirmation' ) > - 1 && typeof ( form ) != 'undefined' ) {
877
875
var conf = '' ;
878
876
var confInput = form . find ( 'input[name=' + el . attr ( 'name' ) + '_confirmation]' ) . eq ( 0 ) ;
879
877
if ( confInput ) {
@@ -901,9 +899,9 @@ jQueryFormUtils.LANG = {
901
899
badTelephone : 'You have not given a correct phone number' ,
902
900
badSecurityAnswer : 'You have not given a correct answer to the security question' ,
903
901
badDate : 'You have not given a correct date' ,
904
- toLongStart : 'You have given an answer longer then ' ,
902
+ toLongStart : 'You have given an answer longer than ' ,
905
903
toLongEnd : ' characters' ,
906
- toShortStart : 'You have given an answer shorter then ' ,
904
+ toShortStart : 'You have given an answer shorter than ' ,
907
905
toShortEnd : ' characters' ,
908
906
badLength : 'You have to give an answer between ' ,
909
907
notConfirmed : 'Values could not be confirmed' ,
@@ -924,8 +922,17 @@ jQueryFormUtils.LANG = {
924
922
* @return {Boolean }
925
923
*/
926
924
jQueryFormUtils . validateUrl = function ( url ) {
927
- var urlFilter = / ( f t p | h t t p | h t t p s ) : \/ \/ ( \w + : { 0 , 1 } \w * @ ) ? ( \S + ) ( : [ 0 - 9 ] + ) ? ( \/ | \/ ( [ \w # ! : . ? + = & % @ ! \- \/ ] ) ) ? / ;
928
- return urlFilter . test ( url ) ;
925
+ // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ but added support for arrays in the url ?arg[]=sdfsdf
926
+ 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;
927
+ if ( urlFilter . test ( url ) ) {
928
+ var domain = url . split ( / ^ h t t p s | ^ h t t p | ^ f t p / i) [ 1 ] . replace ( '://' , '' ) ;
929
+ var domainSlashPos = domain . indexOf ( '/' ) ;
930
+ if ( domainSlashPos > - 1 )
931
+ domain = domain . substr ( 0 , domainSlashPos ) ;
932
+
933
+ return jQueryFormUtils . validateDomain ( domain ) ; // todo: add support for IP-addresses
934
+ }
935
+ return false ;
929
936
} ;
930
937
931
938
/**
0 commit comments