Skip to content

Commit d415c7d

Browse files
committed
input field selector onblur, name changes
jQ selector of form inputs for onBlur, only select input that have attribute "data-validation", this skips form elements with no validation, including submits, buttons, and reset i was going crazy debugging this when every function was named validate, dovalidate, validateInput, etc. so i renamed them based on what they did. thanks
1 parent f637c62 commit d415c7d

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

form-validator/jquery.form-validator.js

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,23 @@
1212
'use strict';
1313

1414
/**
15-
* Should be called on the element containing the input elements
15+
* Assigns validateInputOnBlur function to elements blur event
1616
*
1717
* @param {Object} language Optional, will override $.formUtils.LANG
1818
* @param {Object} settings Optional, will override the default settings
1919
* @return {jQuery}
2020
*/
2121
$.fn.validateOnBlur = function(language, settings) {
22-
this.find('textarea,input').blur(function() {
23-
$(this).doValidate(language, settings);
22+
this.find('input[data-validation], textarea[data-validation]')
23+
.blur(function() {
24+
$(this).validateInputOnBlur(language, settings);
2425
});
25-
2626
return this;
2727
};
2828

2929
/**
30-
* Should be called on the element containing the input elements.
30+
* fade in help message when input gains focus
31+
* fade out when input loses focus
3132
* <input data-help="The info that I want to display for the user when input is focused" ... />
3233
*
3334
* @param {String} attrName - Optional, default is data-help
@@ -71,16 +72,16 @@
7172
};
7273

7374
/**
74-
* Function that validates the value of given input and shows
75-
* error message in a span element that is appended to the parent
76-
* element
75+
* Validate single input when it loses focus
76+
* shows error message in a span element
77+
* that is appended to the parent element
7778
*
7879
* @param {Object} [language] Optional, will override $.formUtils.LANG
7980
* @param {Object} [config] Optional, will override the default settings
8081
* @param {Boolean} [attachKeyupEvent] Optional
8182
* @return {jQuery}
8283
*/
83-
$.fn.doValidate = function(language, config, attachKeyupEvent) {
84+
$.fn.validateInputOnBlur = function(language, config, attachKeyupEvent) {
8485
if(attachKeyupEvent === undefined) {
8586
attachKeyupEvent = true;
8687
}
@@ -143,7 +144,7 @@
143144

144145
if(attachKeyupEvent) {
145146
$element.bind('keyup', function() {
146-
$(this).doValidate(language, config, false);
147+
$(this).validateInputOnBlur(language, config, false);
147148
});
148149
}
149150
}
@@ -177,7 +178,7 @@
177178
* @param [language]
178179
* @param [config]
179180
*/
180-
$.fn.validate = function(language, config) {
181+
$.fn.validateForm = function(language, config) {
181182

182183
language = $.extend($.formUtils.LANG, language || {});
183184
config = $.extend($.formUtils.defaultConfig(), config || {});
@@ -410,7 +411,7 @@
410411
}, 200);
411412
return false;
412413
}
413-
var valid = $(this).validate(config.language, config);
414+
var valid = $(this).validateForm(config.language, config);
414415
if( valid && typeof config.onSuccess == 'function') {
415416
var callbackResponse = config.onSuccess($form);
416417
if( callbackResponse === false )
@@ -450,7 +451,7 @@
450451
$.formUtils = {
451452

452453
/**
453-
* Default config for $(...).validate();
454+
* Default config for $(...).validateForm();
454455
*/
455456
defaultConfig : function() {
456457
return {
@@ -695,9 +696,9 @@
695696

696697
var validator = $.formUtils.validators[rule];
697698

698-
if( validator && typeof validator['validate'] == 'function' ) {
699+
if( validator && typeof validator['validatorFunction'] == 'function' ) {
699700

700-
var isValid = validator.validate(value, $element, config, language, $form);
701+
var isValid = validator.validatorFunction(value, $element, config, language, $form);
701702

702703
if(!isValid) {
703704
validationErrorMsg = $element.attr(config.validationErrorMsgAttribute);
@@ -1110,12 +1111,12 @@
11101111
*/
11111112
$.formUtils.addValidator({
11121113
name : 'email',
1113-
validate : function(email) {
1114+
validatorFunction : function(email) {
11141115
var emailFilter = /^([a-zA-Z0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
11151116
if(emailFilter.test(email)) {
11161117
var parts = email.split('@');
11171118
if(parts.length == 2) {
1118-
return $.formUtils.validators.validate_domain.validate(parts[1]);
1119+
return $.formUtils.validators.validate_domain.validatorFunction(parts[1]);
11191120
}
11201121
}
11211122
return false;
@@ -1129,7 +1130,7 @@
11291130
*/
11301131
$.formUtils.addValidator({
11311132
name : 'domain',
1132-
validate : function(val, $input) {
1133+
validatorFunction : function(val, $input) {
11331134

11341135
var topDomains = ['.com', '.net', '.org', '.biz', '.coop', '.info', '.museum', '.name', '.pro',
11351136
'.edu', '.gov', '.int', '.mil', '.ac', '.ad', '.ae', '.af', '.ag', '.ai', '.al',
@@ -1220,7 +1221,7 @@
12201221
*/
12211222
$.formUtils.addValidator({
12221223
name : 'required',
1223-
validate : function(val, $el) {
1224+
validatorFunction : function(val, $el) {
12241225
return $el.attr('type') == 'checkbox' ? $el.is(':checked') : $.trim(val) !== '';
12251226
},
12261227
errorMessage : '',
@@ -1232,7 +1233,7 @@
12321233
*/
12331234
$.formUtils.addValidator({
12341235
name : 'length',
1235-
validate : function(value, $el, config, lang) {
1236+
validatorFunction : function(value, $el, config, lang) {
12361237
var lengthAllowed = $el.valAttr('length');
12371238
if(lengthAllowed == undefined) {
12381239
var elementType = $el.get(0).nodeName;
@@ -1275,7 +1276,7 @@
12751276
*/
12761277
$.formUtils.addValidator({
12771278
name : 'url',
1278-
validate : function(url) {
1279+
validatorFunction : function(url) {
12791280
// written by Scott Gonzalez: http://projects.scottsplayground.com/iri/ but added support for arrays in the url ?arg[]=sdfsdf
12801281
var urlFilter = /^(https|http|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[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])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
12811282
if( urlFilter.test(url) ) {
@@ -1284,7 +1285,7 @@
12841285
if(domainSlashPos > -1)
12851286
domain = domain.substr(0, domainSlashPos);
12861287

1287-
return $.formUtils.validators.validate_domain.validate(domain); // todo: add support for IP-addresses
1288+
return $.formUtils.validators.validate_domain.validatorFunction(domain); // todo: add support for IP-addresses
12881289
}
12891290
return false;
12901291
},
@@ -1297,7 +1298,7 @@
12971298
*/
12981299
$.formUtils.addValidator({
12991300
name : 'number',
1300-
validate : function(val, $el) {
1301+
validatorFunction : function(val, $el) {
13011302
if(val !== '') {
13021303
var allowing = $el.valAttr('allowing') || '';
13031304
if(allowing.indexOf('number') == -1)
@@ -1325,7 +1326,7 @@
13251326
*/
13261327
$.formUtils.addValidator({
13271328
name : 'alphanumeric',
1328-
validate : function(val, $el, config, language) {
1329+
validatorFunction : function(val, $el, config, language) {
13291330
var patternStart = '^([a-zA-Z0-9',
13301331
patternEnd = ']+)$',
13311332
additionalChars = $el.attr('data-validation-allowing'),
@@ -1355,7 +1356,7 @@
13551356
*/
13561357
$.formUtils.addValidator({
13571358
name : 'custom',
1358-
validate : function(val, $el, config) {
1359+
validatorFunction : function(val, $el, config) {
13591360
var regexp = new RegExp($el.valAttr('regexp'));
13601361
return regexp.test(val);
13611362
},
@@ -1368,7 +1369,7 @@
13681369
*/
13691370
$.formUtils.addValidator({
13701371
name : 'date',
1371-
validate : function(date, $el, conf) {
1372+
validatorFunction : function(date, $el, conf) {
13721373
var dateFormat = 'yyyy-mm-dd';
13731374
if($el.valAttr('format')) {
13741375
dateFormat = $el.valAttr('format');
@@ -1400,7 +1401,7 @@
14001401

14011402
$.formUtils.addValidator({
14021403
name : 'checkbox_group',
1403-
validate : function(val, $el, config, lang, form)
1404+
validatorFunction : function(val, $el, config, lang, form)
14041405
{ // set return var
14051406
var checkResult = true;
14061407
// get name of element. since it is a checkbox group, all checkboxes will have same name

0 commit comments

Comments
 (0)