Browse Source

#71: Show all errors

nghuuphuoc 12 years ago
parent
commit
efa00bbf64

+ 2 - 0
CHANGELOG.md

@@ -3,8 +3,10 @@
 ## v0.3.0
 
 * [#44: Rewrite entirely using Deferred](https://github.com/nghuuphuoc/bootstrapvalidator/issues/44)
+* [#71: Show all errors](https://github.com/nghuuphuoc/bootstrapvalidator/issues/71)
 * [#53: Fix notEmpty validator for radios and checkboxes](https://github.com/nghuuphuoc/bootstrapvalidator/issues/53)
 * [#62: The callback validator passes wrong parameter](https://github.com/nghuuphuoc/bootstrapvalidator/issues/62)
+* [#60: Update the installation guide](https://github.com/nghuuphuoc/bootstrapvalidator/pull/60)
 
 ## v0.2.2 (2014-01-07)
 

+ 38 - 44
dist/js/bootstrapValidator.js

@@ -82,48 +82,44 @@
 
             // Create a help block element for showing the error
             var $field    = $(fields[0]),
-                $parent   = $field.parents('.form-group'),
-                helpBlock = $parent.find('.help-block');
-
-            if (helpBlock.length == 0) {
-                var $small = $('<small/>')
-                                .addClass('help-block')
-                                .css('display', 'none')
-                                .appendTo($parent);
-                $field.data('bootstrapValidator.error', $small);
-
-                // Calculate the number of columns of the label/field element
-                // Then set offset to the help block element
-                var label, cssClasses, offset, size;
-                if (label = $parent.find('label').get(0)) {
-                    // The default Bootstrap form don't require class for label (http://getbootstrap.com/css/#forms)
-                    if (cssClasses = $(label).attr('class')) {
-                        cssClasses = cssClasses.split(' ');
-                        for (var i = 0; i < cssClasses.length; i++) {
-                            if (/^col-(xs|sm|md|lg)-\d+$/.test(cssClasses[i])) {
-                                offset = cssClasses[i].substr(7);
-                                size   = cssClasses[i].substr(4, 2);
-                                break;
-                            }
-                        }
-                    }
-                } else if (cssClasses = $parent.children().eq(0).attr('class')) {
+                $parent   = $field.parents('.form-group');
+
+            // Calculate the number of columns of the label/field element
+            // Then set offset to the help block element
+            var label, cssClasses, offset, size;
+            if (label = $parent.find('label').get(0)) {
+                // The default Bootstrap form don't require class for label (http://getbootstrap.com/css/#forms)
+                if (cssClasses = $(label).attr('class')) {
                     cssClasses = cssClasses.split(' ');
                     for (var i = 0; i < cssClasses.length; i++) {
-                        if (/^col-(xs|sm|md|lg)-offset-\d+$/.test(cssClasses[i])) {
-                            offset = cssClasses[i].substr(14);
+                        if (/^col-(xs|sm|md|lg)-\d+$/.test(cssClasses[i])) {
+                            offset = cssClasses[i].substr(7);
                             size   = cssClasses[i].substr(4, 2);
                             break;
                         }
                     }
                 }
-                if (size && offset) {
-                    $small
+            } else if (cssClasses = $parent.children().eq(0).attr('class')) {
+                cssClasses = cssClasses.split(' ');
+                for (var i = 0; i < cssClasses.length; i++) {
+                    if (/^col-(xs|sm|md|lg)-offset-\d+$/.test(cssClasses[i])) {
+                        offset = cssClasses[i].substr(14);
+                        size   = cssClasses[i].substr(4, 2);
+                        break;
+                    }
+                }
+            }
+
+            if (size && offset) {
+                for (var validatorName in this.options.fields[field].validators) {
+                    $('<small/>')
+                        .css('display', 'none')
+                        .attr('data-bs-validator', validatorName)
+                        .addClass('help-block')
                         .addClass(['col-', size, '-offset-', offset].join(''))
-                        .addClass(['col-', size, '-', 12 - offset].join(''));
+                        .addClass(['col-', size, '-', 12 - offset].join(''))
+                        .appendTo($parent);
                 }
-            } else {
-                $field.data('bootstrapValidator.error', helpBlock.eq(0));
             }
         },
 
@@ -189,7 +185,7 @@
                 $.when(validateResult).then(function(isValid) {
                     delete that._dfds[field][validatorName];
                     if (isValid) {
-                        that.removeError($field);
+                        that.removeError($field, validatorName);
                     } else {
                         that._invalidFields[field] = true;
                         that.showError($field, validatorName);
@@ -235,10 +231,9 @@
                 .parents('.form-group')
                     .removeClass('has-success')
                     .addClass('has-error')
-                    .end()
-                .data('bootstrapValidator.error')
-                    .html(message)
-                    .show();
+                    .find('.help-block[data-bs-validator="' + validatorName + '"]')
+                        .html(message)
+                        .show();
         },
 
         /**
@@ -246,14 +241,13 @@
          *
          * @param {jQuery} $field The field element
          */
-        removeError: function($field) {
+        removeError: function($field, validatorName) {
             $field
                 .parents('.form-group')
                     .removeClass('has-error')
                     .addClass('has-success')
-                    .end()
-                .data('bootstrapValidator.error')
-                    .hide();
+                    .find('.help-block[data-bs-validator="' + validatorName + '"]')
+                        .hide();
         }
     };
 
@@ -394,7 +388,7 @@
             }
 
             if (value != compareWith.val()) {
-                validator.removeError(compareWith);
+                validator.removeError(compareWith, 'different');
                 return true;
             } else {
                 return false;
@@ -511,7 +505,7 @@
             }
 
             if (value == compareWith.val()) {
-                validator.removeError(compareWith);
+                validator.removeError(compareWith, 'identical');
                 return true;
             } else {
                 return false;

File diff suppressed because it is too large
+ 1 - 1
dist/js/bootstrapValidator.min.js


+ 36 - 42
src/js/bootstrapValidator.js

@@ -82,48 +82,44 @@
 
             // Create a help block element for showing the error
             var $field    = $(fields[0]),
-                $parent   = $field.parents('.form-group'),
-                helpBlock = $parent.find('.help-block');
-
-            if (helpBlock.length == 0) {
-                var $small = $('<small/>')
-                                .addClass('help-block')
-                                .css('display', 'none')
-                                .appendTo($parent);
-                $field.data('bootstrapValidator.error', $small);
-
-                // Calculate the number of columns of the label/field element
-                // Then set offset to the help block element
-                var label, cssClasses, offset, size;
-                if (label = $parent.find('label').get(0)) {
-                    // The default Bootstrap form don't require class for label (http://getbootstrap.com/css/#forms)
-                    if (cssClasses = $(label).attr('class')) {
-                        cssClasses = cssClasses.split(' ');
-                        for (var i = 0; i < cssClasses.length; i++) {
-                            if (/^col-(xs|sm|md|lg)-\d+$/.test(cssClasses[i])) {
-                                offset = cssClasses[i].substr(7);
-                                size   = cssClasses[i].substr(4, 2);
-                                break;
-                            }
-                        }
-                    }
-                } else if (cssClasses = $parent.children().eq(0).attr('class')) {
+                $parent   = $field.parents('.form-group');
+
+            // Calculate the number of columns of the label/field element
+            // Then set offset to the help block element
+            var label, cssClasses, offset, size;
+            if (label = $parent.find('label').get(0)) {
+                // The default Bootstrap form don't require class for label (http://getbootstrap.com/css/#forms)
+                if (cssClasses = $(label).attr('class')) {
                     cssClasses = cssClasses.split(' ');
                     for (var i = 0; i < cssClasses.length; i++) {
-                        if (/^col-(xs|sm|md|lg)-offset-\d+$/.test(cssClasses[i])) {
-                            offset = cssClasses[i].substr(14);
+                        if (/^col-(xs|sm|md|lg)-\d+$/.test(cssClasses[i])) {
+                            offset = cssClasses[i].substr(7);
                             size   = cssClasses[i].substr(4, 2);
                             break;
                         }
                     }
                 }
-                if (size && offset) {
-                    $small
+            } else if (cssClasses = $parent.children().eq(0).attr('class')) {
+                cssClasses = cssClasses.split(' ');
+                for (var i = 0; i < cssClasses.length; i++) {
+                    if (/^col-(xs|sm|md|lg)-offset-\d+$/.test(cssClasses[i])) {
+                        offset = cssClasses[i].substr(14);
+                        size   = cssClasses[i].substr(4, 2);
+                        break;
+                    }
+                }
+            }
+
+            if (size && offset) {
+                for (var validatorName in this.options.fields[field].validators) {
+                    $('<small/>')
+                        .css('display', 'none')
+                        .attr('data-bs-validator', validatorName)
+                        .addClass('help-block')
                         .addClass(['col-', size, '-offset-', offset].join(''))
-                        .addClass(['col-', size, '-', 12 - offset].join(''));
+                        .addClass(['col-', size, '-', 12 - offset].join(''))
+                        .appendTo($parent);
                 }
-            } else {
-                $field.data('bootstrapValidator.error', helpBlock.eq(0));
             }
         },
 
@@ -189,7 +185,7 @@
                 $.when(validateResult).then(function(isValid) {
                     delete that._dfds[field][validatorName];
                     if (isValid) {
-                        that.removeError($field);
+                        that.removeError($field, validatorName);
                     } else {
                         that._invalidFields[field] = true;
                         that.showError($field, validatorName);
@@ -235,10 +231,9 @@
                 .parents('.form-group')
                     .removeClass('has-success')
                     .addClass('has-error')
-                    .end()
-                .data('bootstrapValidator.error')
-                    .html(message)
-                    .show();
+                    .find('.help-block[data-bs-validator="' + validatorName + '"]')
+                        .html(message)
+                        .show();
         },
 
         /**
@@ -246,14 +241,13 @@
          *
          * @param {jQuery} $field The field element
          */
-        removeError: function($field) {
+        removeError: function($field, validatorName) {
             $field
                 .parents('.form-group')
                     .removeClass('has-error')
                     .addClass('has-success')
-                    .end()
-                .data('bootstrapValidator.error')
-                    .hide();
+                    .find('.help-block[data-bs-validator="' + validatorName + '"]')
+                        .hide();
         }
     };
 

+ 1 - 1
src/js/validator/different.js

@@ -21,7 +21,7 @@
             }
 
             if (value != compareWith.val()) {
-                validator.removeError(compareWith);
+                validator.removeError(compareWith, 'different');
                 return true;
             } else {
                 return false;

+ 1 - 1
src/js/validator/identical.js

@@ -21,7 +21,7 @@
             }
 
             if (value == compareWith.val()) {
-                validator.removeError(compareWith);
+                validator.removeError(compareWith, 'identical');
                 return true;
             } else {
                 return false;