Browse Source

Support data-bv-onstatus attribute for field

phuoc 11 years ago
parent
commit
33c84e49a3

+ 1 - 1
dist/css/bootstrapValidator.min.css

@@ -2,7 +2,7 @@
  * BootstrapValidator (http://bootstrapvalidator.com)
  * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3
  *
- * @version     v0.5.0-dev, built on 2014-07-12 8:31:42 AM
+ * @version     v0.5.0-dev, built on 2014-07-12 9:36:29 AM
  * @author      https://twitter.com/nghuuphuoc
  * @copyright   (c) 2013 - 2014 Nguyen Huu Phuoc
  * @license     MIT

+ 8 - 2
dist/js/bootstrapValidator.js

@@ -2,7 +2,7 @@
  * BootstrapValidator (http://bootstrapvalidator.com)
  * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3
  *
- * @version     v0.5.0-dev, built on 2014-07-12 8:31:42 AM
+ * @version     v0.5.0-dev, built on 2014-07-12 9:36:29 AM
  * @author      https://twitter.com/nghuuphuoc
  * @copyright   (c) 2013 - 2014 Nguyen Huu Phuoc
  * @license     MIT
@@ -172,6 +172,7 @@
                     group:         $field.attr('data-bv-group'),
                     selector:      $field.attr('data-bv-selector'),
                     threshold:     $field.attr('data-bv-threshold'),
+                    onStatus:      $field.attr('data-bv-onstatus'),
                     onSuccess:     $field.attr('data-bv-onsuccess'),
                     onError:       $field.attr('data-bv-onerror'),
                     validators:    validators
@@ -316,6 +317,11 @@
                     $.fn.bootstrapValidator.helpers.call(that.options.fields[field].onError, [e, data]);
                 });
             }
+            if (this.options.fields[field].onStatus) {
+                fields.on('status.field.bv', function(e, data) {
+                    $.fn.bootstrapValidator.helpers.call(that.options.fields[field].onStatus, [e, data]);
+                });
+            }
 
             // Set live mode
             events = $.map(trigger, function(item) {
@@ -956,7 +962,7 @@
                 }
 
                 // Trigger an event
-                this.$form.trigger($.Event('status.field.bv'), {
+                $field.trigger($.Event('status.field.bv'), {
                     field: field,
                     element: $field,
                     status: status

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


+ 7 - 1
src/js/bootstrapValidator.js

@@ -171,6 +171,7 @@
                     group:         $field.attr('data-bv-group'),
                     selector:      $field.attr('data-bv-selector'),
                     threshold:     $field.attr('data-bv-threshold'),
+                    onStatus:      $field.attr('data-bv-onstatus'),
                     onSuccess:     $field.attr('data-bv-onsuccess'),
                     onError:       $field.attr('data-bv-onerror'),
                     validators:    validators
@@ -315,6 +316,11 @@
                     $.fn.bootstrapValidator.helpers.call(that.options.fields[field].onError, [e, data]);
                 });
             }
+            if (this.options.fields[field].onStatus) {
+                fields.on('status.field.bv', function(e, data) {
+                    $.fn.bootstrapValidator.helpers.call(that.options.fields[field].onStatus, [e, data]);
+                });
+            }
 
             // Set live mode
             events = $.map(trigger, function(item) {
@@ -955,7 +961,7 @@
                 }
 
                 // Trigger an event
-                this.$form.trigger($.Event('status.field.bv'), {
+                $field.trigger($.Event('status.field.bv'), {
                     field: field,
                     element: $field,
                     status: status

+ 17 - 3
test/spec.js

@@ -382,6 +382,10 @@ TestSuite = $.extend({}, TestSuite, {
             $('#msg').html('TestSuite.Event.onEmailInvalid() called, ' + data.field + ' is invalid');
         },
 
+        onEmailStatus: function(e, data) {
+            $('#status').html('TestSuite.Event.onEmailStatus() called; status = ' + data.status);
+        },
+
         onFormValid: function(e) {
             $('#msg').html('TestSuite.Event.onFormValid() called, form ' + $(e.target).attr('id') + ' is valid');
         },
@@ -566,13 +570,18 @@ function onEmailInvalid(e, data) {
     $('#msg').html(data.field + ' is invalid');
 };
 
+function onEmailStatus(e, data) {
+    $('#status').html(data.status);
+};
+
 describe('event field attribute callback global', function() {
     beforeEach(function() {
         $([
             '<form class="form-horizontal" id="eventForm">',
                 '<div id="msg"></div>',
+                '<div id="status"></div>',
                 '<div class="form-group">',
-                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="onEmailValid" data-bv-onerror="onEmailInvalid" />',
+                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="onEmailValid" data-bv-onerror="onEmailInvalid" data-bv-onstatus="onEmailStatus" />',
                 '</div>',
             '</form>'
         ].join('\n')).appendTo('body');
@@ -591,12 +600,14 @@ describe('event field attribute callback global', function() {
         this.$email.val('email@domain.com');
         this.bv.validate();
         expect($('#msg').html()).toEqual('email is valid');
+        expect($('#status').html()).toEqual(this.bv.STATUS_VALID);
     });
 
     it('call data-bv-onerror', function() {
         this.$email.val('email@domain');
         this.bv.validate();
         expect($('#msg').html()).toEqual('email is invalid');
+        expect($('#status').html()).toEqual(this.bv.STATUS_INVALID);
     });
 });
 
@@ -605,8 +616,9 @@ describe('event field attribute callback namespace', function() {
         $([
             '<form class="form-horizontal" id="eventForm">',
                 '<div id="msg"></div>',
+                '<div id="status"></div>',
                 '<div class="form-group">',
-                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="TestSuite.Event.onEmailValid" data-bv-onerror="TestSuite.Event.onEmailInvalid" />',
+                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="TestSuite.Event.onEmailValid" data-bv-onerror="TestSuite.Event.onEmailInvalid" data-bv-onstatus="TestSuite.Event.onEmailStatus" />',
                 '</div>',
             '</form>'
         ].join('\n')).appendTo('body');
@@ -625,12 +637,14 @@ describe('event field attribute callback namespace', function() {
         this.$email.val('email@domain.com');
         this.bv.validate();
         expect($('#msg').html()).toEqual('TestSuite.Event.onEmailValid() called, email is valid');
+        expect($('#status').html()).toEqual('TestSuite.Event.onEmailStatus() called; status = ' + this.bv.STATUS_VALID);
     });
 
     it('call data-bv-onerror', function() {
         this.$email.val('email@domain');
         this.bv.validate();
         expect($('#msg').html()).toEqual('TestSuite.Event.onEmailInvalid() called, email is invalid');
+        expect($('#status').html()).toEqual('TestSuite.Event.onEmailStatus() called; status = ' + this.bv.STATUS_INVALID);
     });
 });
 
@@ -2782,7 +2796,7 @@ describe('id', function() {
         this.bv.updateOption('id', 'id', 'country', 'CL');
 
         // Valid samples
-        var validSamples = ['76086428-5', '22060449-7', '12531909-2'];
+        var validSamples = ['76086428-5', '22060449-7', '12531909-2','12937893-K','12937893-k'];
         for (var i in validSamples) {
             this.bv.resetForm();
             this.$id.val(validSamples[i]);

+ 16 - 2
test/spec/event.js

@@ -8,6 +8,10 @@ TestSuite = $.extend({}, TestSuite, {
             $('#msg').html('TestSuite.Event.onEmailInvalid() called, ' + data.field + ' is invalid');
         },
 
+        onEmailStatus: function(e, data) {
+            $('#status').html('TestSuite.Event.onEmailStatus() called; status = ' + data.status);
+        },
+
         onFormValid: function(e) {
             $('#msg').html('TestSuite.Event.onFormValid() called, form ' + $(e.target).attr('id') + ' is valid');
         },
@@ -192,13 +196,18 @@ function onEmailInvalid(e, data) {
     $('#msg').html(data.field + ' is invalid');
 };
 
+function onEmailStatus(e, data) {
+    $('#status').html(data.status);
+};
+
 describe('event field attribute callback global', function() {
     beforeEach(function() {
         $([
             '<form class="form-horizontal" id="eventForm">',
                 '<div id="msg"></div>',
+                '<div id="status"></div>',
                 '<div class="form-group">',
-                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="onEmailValid" data-bv-onerror="onEmailInvalid" />',
+                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="onEmailValid" data-bv-onerror="onEmailInvalid" data-bv-onstatus="onEmailStatus" />',
                 '</div>',
             '</form>'
         ].join('\n')).appendTo('body');
@@ -217,12 +226,14 @@ describe('event field attribute callback global', function() {
         this.$email.val('email@domain.com');
         this.bv.validate();
         expect($('#msg').html()).toEqual('email is valid');
+        expect($('#status').html()).toEqual(this.bv.STATUS_VALID);
     });
 
     it('call data-bv-onerror', function() {
         this.$email.val('email@domain');
         this.bv.validate();
         expect($('#msg').html()).toEqual('email is invalid');
+        expect($('#status').html()).toEqual(this.bv.STATUS_INVALID);
     });
 });
 
@@ -231,8 +242,9 @@ describe('event field attribute callback namespace', function() {
         $([
             '<form class="form-horizontal" id="eventForm">',
                 '<div id="msg"></div>',
+                '<div id="status"></div>',
                 '<div class="form-group">',
-                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="TestSuite.Event.onEmailValid" data-bv-onerror="TestSuite.Event.onEmailInvalid" />',
+                    '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="TestSuite.Event.onEmailValid" data-bv-onerror="TestSuite.Event.onEmailInvalid" data-bv-onstatus="TestSuite.Event.onEmailStatus" />',
                 '</div>',
             '</form>'
         ].join('\n')).appendTo('body');
@@ -251,12 +263,14 @@ describe('event field attribute callback namespace', function() {
         this.$email.val('email@domain.com');
         this.bv.validate();
         expect($('#msg').html()).toEqual('TestSuite.Event.onEmailValid() called, email is valid');
+        expect($('#status').html()).toEqual('TestSuite.Event.onEmailStatus() called; status = ' + this.bv.STATUS_VALID);
     });
 
     it('call data-bv-onerror', function() {
         this.$email.val('email@domain');
         this.bv.validate();
         expect($('#msg').html()).toEqual('TestSuite.Event.onEmailInvalid() called, email is invalid');
+        expect($('#status').html()).toEqual('TestSuite.Event.onEmailStatus() called; status = ' + this.bv.STATUS_INVALID);
     });
 });
 

+ 0 - 2
test/spec/validator/id.js

@@ -128,8 +128,6 @@ describe('id', function() {
     it('Chilean national identification number (RUN/RUT)', function() {
         this.bv.updateOption('id', 'id', 'country', 'CL');
 
-        console.log('Chilean ruts');
-
         // Valid samples
         var validSamples = ['76086428-5', '22060449-7', '12531909-2','12937893-K','12937893-k'];
         for (var i in validSamples) {