Skip to content

Commit 8e37bb4

Browse files
committed
Now possible to refresh the validation, issue victorjonsson#59
1 parent 5a1aa99 commit 8e37bb4

File tree

10 files changed

+130
-78
lines changed

10 files changed

+130
-78
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,11 @@ it calls jQ func **$.formUtils.validateInput** to validate the single input when
295295
## Changelog
296296

297297

298+
### 2.1.x
299+
* E-mail validation support .eu top domain
300+
* Improvements in server validation
301+
* Now possible to re-initiate the validation. This makes it possible to dynamically change the form and then call $.validate() again to refresh the validation (issue #59)
302+
298303
### 2.1.15
299304
* E-mail addresses can now contain + symbol
300305
* Correction of the US states in validation "federatestate"

form-validator/date.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
* @website http://formvalidator.net/#location-validators
1212
* @license Dual licensed under the MIT or GPL Version 2 licenses
13-
* @version 2.1.25
13+
* @version 2.1.26
1414
*/
1515
(function($) {
1616

form-validator/file.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
* @website http://formvalidator.net/
1212
* @license Dual licensed under the MIT or GPL Version 2 licenses
13-
* @version 2.1.25
13+
* @version 2.1.26
1414
*/
1515
(function($, window) {
1616

form-validator/form-test.html

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -151,41 +151,46 @@
151151
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
152152
<script src="jquery.form-validator.js"></script>
153153
<script>
154-
(function($) {
154+
(function($, window) {
155155

156156
var dev = window.location.hash.indexOf('dev') > -1 ? '.dev' : '';
157157

158-
$.validate({
159-
language : {
160-
requiredFields: 'Du måste bocka för denna'
161-
},
162-
errorMessagePosition : 'top',
163-
scrollToTopOnError : true,
164-
modules : 'security'+dev+', location'+dev+', sweden'+dev+', file'+dev+', uk'+dev,
165-
onModulesLoaded: function( $form ) {
166-
$('#country-suggestions').suggestCountry();
167-
$('#swedish-county-suggestions').suggestSwedishCounty();
168-
$('#password').displayPasswordStrength();
169-
},
170-
onValidate : function() {
171-
var $callbackInput = $('#callback');
172-
if( $callbackInput.val() == 1 ) {
173-
return {
174-
element : $callbackInput,
175-
message : 'This validation was made in a callback'
176-
};
177-
}
178-
},
179-
onError : function() {
180-
if( !$.formUtils.haltValidation ) {
181-
alert('Invalid');
158+
window.applyValidation = function() {
159+
$.validate({
160+
language : {
161+
requiredFields: 'Du måste bocka för denna'
162+
},
163+
errorMessagePosition : 'top',
164+
scrollToTopOnError : true,
165+
modules : 'security'+dev+', location'+dev+', sweden'+dev+', file'+dev+', uk'+dev,
166+
onModulesLoaded: function( $form ) {
167+
console.log('wii');
168+
$('#country-suggestions').suggestCountry();
169+
$('#swedish-county-suggestions').suggestSwedishCounty();
170+
$('#password').displayPasswordStrength();
171+
},
172+
onValidate : function() {
173+
var $callbackInput = $('#callback');
174+
if( $callbackInput.val() == 1 ) {
175+
return {
176+
element : $callbackInput,
177+
message : 'This validation was made in a callback'
178+
};
179+
}
180+
},
181+
onError : function() {
182+
if( !$.formUtils.haltValidation ) {
183+
alert('Invalid');
184+
}
185+
},
186+
onSuccess : function() {
187+
alert('Valid');
188+
return false;
182189
}
183-
},
184-
onSuccess : function() {
185-
alert('Valid');
186-
return false;
187-
}
188-
});
190+
});
191+
};
192+
193+
window.applyValidation();
189194

190195
// Load one module outside $.validate() even though you do not have to
191196
$.formUtils.loadModules('date'+dev+'.js', false, false);
@@ -201,7 +206,7 @@
201206
errorMessageKey: 'badEvenNumber'
202207
});
203208

204-
})(jQuery);
209+
})(jQuery, window);
205210
</script>
206211
<body>
207212
</html>

form-validator/jquery.form-validator.js

Lines changed: 81 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*
66
* @website http://formvalidator.net/
77
* @license Dual licensed under the MIT or GPL Version 2 licenses
8-
* @version 2.1.25
8+
* @version 2.1.26
99
*/
1010
(function($) {
1111

@@ -19,10 +19,15 @@
1919
* @return {jQuery}
2020
*/
2121
$.fn.validateOnBlur = function(language, settings) {
22+
23+
var blurValidationCallback = function() {
24+
$(this).validateInputOnBlur(language, settings);
25+
};
26+
2227
this.find('input[data-validation], textarea[data-validation]')
23-
.blur(function() {
24-
$(this).validateInputOnBlur(language, settings);
25-
});
28+
.unbind('blur', blurValidationCallback)
29+
.bind('blur', blurValidationCallback);
30+
2631
return this;
2732
};
2833

@@ -39,12 +44,24 @@
3944
attrName = 'data-validation-help';
4045
}
4146

47+
// Remove previously added event listeners
48+
this.find('.has-help-txt')
49+
.valAttr('has-keyup-event', false)
50+
.valAttr('backend-valid', false)
51+
.valAttr('backend-invalid', false)
52+
.unbind('focus')
53+
.unbind('blur')
54+
.removeClass('has-help-txt');
55+
56+
// Add help text listeners
4257
this.find('textarea,input').each(function() {
4358
var $element = $(this),
4459
className = 'jquery_form_help_' + $element.attr('name'),
4560
help = $element.attr(attrName);
61+
4662
if(help) {
4763
$element
64+
.addClass('has-help-txt')
4865
.focus(function() {
4966
var $help = $element.parent().find('.'+className);
5067
if($help.length == 0) {
@@ -367,8 +384,9 @@
367384

368385
sugs = $.split($field.attr('data-suggestions'));
369386

370-
if( sugs.length > 0 ) {
387+
if( sugs.length > 0 && !$field.hasClass('has-suggestions') ) {
371388
$.formUtils.suggest($field, sugs, settings);
389+
$field.addClass('has-suggestions');
372390
}
373391
});
374392
return this;
@@ -422,39 +440,47 @@
422440
onError : false
423441
}, config || {});
424442

443+
var formSubmitCallback = function() {
444+
var $form = $(this);
445+
if($.formUtils.isLoadingModules) {
446+
setTimeout(function() {
447+
$form.trigger('submit');
448+
}, 200);
449+
return false;
450+
}
451+
var valid = $(this).validateForm(config.language, config);
452+
if( valid && typeof config.onSuccess == 'function') {
453+
var callbackResponse = config.onSuccess($form);
454+
if( callbackResponse === false )
455+
return false;
456+
} else if ( !valid && typeof config.onError == 'function' ) {
457+
config.onError($form);
458+
return false;
459+
} else {
460+
return valid;
461+
}
462+
};
463+
464+
// Remove all event listeners previously added
465+
$('form').unbind('submit', formSubmitCallback);
466+
467+
// Add validation to forms
425468
$.split(config.form, function(formQuery) {
469+
426470
var $form = $(formQuery);
427471

428472
// Validate when submitted
429-
$form.bind('submit', function() {
430-
if($.formUtils.isLoadingModules) {
431-
setTimeout(function() {
432-
$form.trigger('submit');
433-
}, 200);
434-
return false;
435-
}
436-
var valid = $(this).validateForm(config.language, config);
437-
if( valid && typeof config.onSuccess == 'function') {
438-
var callbackResponse = config.onSuccess($form);
439-
if( callbackResponse === false )
440-
return false;
441-
} else if ( !valid && typeof config.onError == 'function' ) {
442-
config.onError($form);
443-
return false;
444-
} else {
445-
return valid;
446-
}
447-
});
473+
$form.bind('submit', formSubmitCallback);
448474

449-
if( config.validateOnBlur ) {
450-
$form.validateOnBlur(config.language, config);
451-
}
452475
if( config.showHelpOnFocus ) {
453476
$form.showHelpOnFocus();
454477
}
455478
if( config.addSuggestions ) {
456479
$form.addSuggestions();
457480
}
481+
if( config.validateOnBlur ) {
482+
$form.validateOnBlur(config.language, config);
483+
}
458484
});
459485

460486
if( config.modules != '' ) {
@@ -564,6 +590,8 @@
564590
*/
565591
isLoadingModules : false,
566592

593+
loadedModules : {},
594+
567595
/**
568596
* @example
569597
* $.formUtils.loadModules('date, security.dev');
@@ -592,14 +620,16 @@
592620
return;
593621
}
594622

623+
var hasLoadedAnyModule = false;
624+
595625
var loadModuleScripts = function(modules, path) {
596626
var moduleList = $.split(modules),
597627
numModules = moduleList.length,
598628
moduleLoadedCallback = function() {
599629
numModules--;
600630
if( numModules == 0 ) {
601631
$.formUtils.isLoadingModules = false;
602-
if( fireEvent ) {
632+
if( fireEvent && hasLoadedAnyModule ) {
603633
$.formUtils.trigger('load', path);
604634
}
605635
}
@@ -620,16 +650,29 @@
620650
else {
621651
var scriptUrl = path + modName + (modName.substr(-3) == '.js' ? '':'.js'),
622652
script = document.createElement('SCRIPT');
623-
script.type = 'text/javascript';
624-
script.onload = moduleLoadedCallback;
625-
script.src = scriptUrl + ( scriptUrl.substr(-7) == '.dev.js' ? cacheSuffix:'' );
626-
script.onreadystatechange = function() {
627-
// IE 7 fix
628-
if( this.readyState == 'complete' ) {
629-
moduleLoadedCallback();
630-
}
631-
};
632-
appendToElement.appendChild( script );
653+
654+
if( scriptUrl in $.formUtils.loadedModules ) {
655+
// already loaded
656+
moduleLoadedCallback();
657+
}
658+
else {
659+
660+
// Remember that this script is loaded
661+
$.formUtils.loadedModules[scriptUrl] = 1;
662+
hasLoadedAnyModule = true;
663+
664+
// Load the script
665+
script.type = 'text/javascript';
666+
script.onload = moduleLoadedCallback;
667+
script.src = scriptUrl + ( scriptUrl.substr(-7) == '.dev.js' ? cacheSuffix:'' );
668+
script.onreadystatechange = function() {
669+
// IE 7 fix
670+
if( this.readyState == 'complete' ) {
671+
moduleLoadedCallback();
672+
}
673+
};
674+
appendToElement.appendChild( script );
675+
}
633676
}
634677
});
635678
};

form-validator/jquery.form-validator.min.js

Lines changed: 1 addition & 2 deletions
Large diffs are not rendered by default.

form-validator/location.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
* @website http://formvalidator.net/#location-validators
1212
* @license Dual licensed under the MIT or GPL Version 2 licenses
13-
* @version 2.1.25
13+
* @version 2.1.26
1414
*/
1515
(function($) {
1616

form-validator/security.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
*
1313
* @website http://formvalidator.net/#security-validators
1414
* @license Dual licensed under the MIT or GPL Version 2 licenses
15-
* @version 2.1.25
15+
* @version 2.1.26
1616
*/
1717
(function($) {
1818

form-validator/sweden.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*
1414
* @website http://formvalidator.net/#swedish-validators
1515
* @license Dual licensed under the MIT or GPL Version 2 licenses
16-
* @version 2.1.25
16+
* @version 2.1.26
1717
*/
1818
(function($, window) {
1919

form-validator/uk.dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
* @website http://formvalidator.net/#uk-validators
1111
* @license Dual licensed under the MIT or GPL Version 2 licenses
12-
* @version 2.1.25
12+
* @version 2.1.26
1313
*/
1414
$.formUtils.addValidator({
1515
name : 'ukvatnumber',

0 commit comments

Comments
 (0)