event.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. function onEmailValid(e, data) {
  2. $('#msg').html(data.field + ' is valid');
  3. };
  4. function onEmailInvalid(e, data) {
  5. $('#msg').html(data.field + ' is invalid');
  6. };
  7. describe('event field attribute callback global', function() {
  8. beforeEach(function() {
  9. var html = [
  10. '<div class="container">',
  11. '<form class="form-horizontal" id="form">',
  12. '<div id="msg"></div>',
  13. '<div class="form-group">',
  14. '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="onEmailValid" data-bv-onerror="onEmailInvalid" />',
  15. '</div>',
  16. '</form>',
  17. '</div>'
  18. ].join('\n');
  19. $(html).appendTo('body');
  20. $('#form').bootstrapValidator();
  21. this._bs = $('#form').data('bootstrapValidator');
  22. this._$field = this._bs.getFieldElements('email');
  23. });
  24. afterEach(function() {
  25. $('#form').bootstrapValidator('destroy').remove();
  26. });
  27. it('call data-bv-onsuccess', function() {
  28. this._$field.val('email@domain.com');
  29. this._bs.validate();
  30. expect($('#msg').html()).toEqual('email is valid');
  31. });
  32. it('call data-bv-onerror', function() {
  33. this._$field.val('email@domain');
  34. this._bs.validate();
  35. expect($('#msg').html()).toEqual('email is invalid');
  36. });
  37. });
  38. var My = {
  39. NameSpace: {
  40. onEmailValid: function(e, data) {
  41. $('#msg').html('My.NameSpace.onEmailValid() called, ' + data.field + ' is valid');
  42. },
  43. onEmailInvalid: function(e, data) {
  44. $('#msg').html('My.NameSpace.onEmailInvalid() called, ' + data.field + ' is invalid');
  45. }
  46. }
  47. };
  48. describe('event field attribute callback namespace', function() {
  49. beforeEach(function() {
  50. var html = [
  51. '<div class="container">',
  52. '<form class="form-horizontal" id="form">',
  53. '<div id="msg"></div>',
  54. '<div class="form-group">',
  55. '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="My.NameSpace.onEmailValid" data-bv-onerror="My.NameSpace.onEmailInvalid" />',
  56. '</div>',
  57. '</form>',
  58. '</div>'
  59. ].join('\n');
  60. $(html).appendTo('body');
  61. $('#form').bootstrapValidator();
  62. this._bs = $('#form').data('bootstrapValidator');
  63. this._$field = this._bs.getFieldElements('email');
  64. });
  65. afterEach(function() {
  66. $('#form').bootstrapValidator('destroy').remove();
  67. });
  68. it('call data-bv-onsuccess', function() {
  69. this._$field.val('email@domain.com');
  70. this._bs.validate();
  71. expect($('#msg').html()).toEqual('My.NameSpace.onEmailValid() called, email is valid');
  72. });
  73. it('call data-bv-onerror', function() {
  74. this._$field.val('email@domain');
  75. this._bs.validate();
  76. expect($('#msg').html()).toEqual('My.NameSpace.onEmailInvalid() called, email is invalid');
  77. });
  78. });
  79. describe('event field trigger', function() {
  80. beforeEach(function() {
  81. var html = [
  82. '<div class="container">',
  83. '<form class="form-horizontal" id="form">',
  84. '<div id="msg"></div>',
  85. '<div class="form-group">',
  86. '<input type="text" name="email" data-bv-emailaddress />',
  87. '</div>',
  88. '</form>',
  89. '</div>'
  90. ].join('\n');
  91. $(html).appendTo('body');
  92. $('#form')
  93. .bootstrapValidator()
  94. .on('success.field.bv', '[name="email"]', function(e, data) {
  95. $('#msg').html('triggered success.field.bv on ' + data.field);
  96. })
  97. .on('error.field.bv', '[name="email"]', function(e, data) {
  98. $('#msg').html('triggered error.field.bv on ' + data.field);
  99. });
  100. this._bs = $('#form').data('bootstrapValidator');
  101. this._$field = this._bs.getFieldElements('email');
  102. });
  103. afterEach(function() {
  104. $('#form').bootstrapValidator('destroy').remove();
  105. });
  106. it('trigger success.field.bv', function() {
  107. this._$field.val('email@domain.com');
  108. this._bs.validate();
  109. expect($('#msg').html()).toEqual('triggered success.field.bv on email');
  110. });
  111. it('trigger error.field.bv', function() {
  112. this._$field.val('email@domain');
  113. this._bs.validate();
  114. expect($('#msg').html()).toEqual('triggered error.field.bv on email');
  115. });
  116. });
  117. describe('event field programmatically', function() {
  118. beforeEach(function() {
  119. var html = [
  120. '<div class="container">',
  121. '<form class="form-horizontal" id="form">',
  122. '<div id="msg"></div>',
  123. '<div class="form-group">',
  124. '<input type="text" name="email" data-bv-emailaddress />',
  125. '</div>',
  126. '</form>',
  127. '</div>'
  128. ].join('\n');
  129. $(html).appendTo('body');
  130. $('#form').bootstrapValidator({
  131. fields: {
  132. email: {
  133. onSuccess: function(e, data) {
  134. $('#msg').html('onSuccess() called');
  135. },
  136. onError: function(e, data) {
  137. $('#msg').html('onError() called');
  138. },
  139. validator: {
  140. emailAddress: {}
  141. }
  142. }
  143. }
  144. });
  145. this._bs = $('#form').data('bootstrapValidator');
  146. this._$field = this._bs.getFieldElements('email');
  147. });
  148. afterEach(function() {
  149. $('#form').bootstrapValidator('destroy').remove();
  150. });
  151. it('call onSuccess()', function() {
  152. this._$field.val('email@domain.com');
  153. this._bs.validate();
  154. expect($('#msg').html()).toEqual('onSuccess() called');
  155. });
  156. it('call onError()', function() {
  157. this._$field.val('email@domain');
  158. this._bs.validate();
  159. expect($('#msg').html()).toEqual('onError() called');
  160. });
  161. });