autoFocus.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. describe('autoFocus', function() {
  2. beforeEach(function() {
  3. $([
  4. '<form class="form-horizontal" id="autoFocusForm">',
  5. '<div class="form-group">',
  6. '<input type="text" name="username" required />',
  7. '</div>',
  8. '<div class="form-group">',
  9. '<input type="text" name="email" required data-bv-emailaddress />',
  10. '</div>',
  11. '<div class="form-group">',
  12. '<button type="submit" id="submitButton">Submit</button>',
  13. '</div>',
  14. '</form>'
  15. ].join('')).appendTo('body');
  16. this.bv = $('#autoFocusForm')
  17. .bootstrapValidator()
  18. .submit(function(e) {
  19. e.preventDefault();
  20. })
  21. .data('bootstrapValidator');
  22. this.$username = this.bv.getFieldElements('username');
  23. this.$email = this.bv.getFieldElements('email');
  24. });
  25. afterEach(function() {
  26. $('#autoFocusForm').bootstrapValidator('destroy').remove();
  27. });
  28. it('default option (autoFocus=true)', function() {
  29. $('#submitButton').click();
  30. expect(this.$username.is(':focus')).toBeTruthy();
  31. expect($(document.activeElement).attr('name')).toEqual('username');
  32. this.bv.resetForm();
  33. this.$username.val('user_name');
  34. this.$email.val('');
  35. $('#submitButton').click();
  36. expect(this.$email.is(':focus')).toBeTruthy();
  37. expect($(document.activeElement).attr('name')).toEqual('email');
  38. });
  39. it('set autoFocus=false for form', function() {
  40. $('#autoFocusForm')
  41. .bootstrapValidator('destroy')
  42. .bootstrapValidator({
  43. autoFocus: false
  44. });
  45. this.$username.val('');
  46. this.$email.val('invalid#email');
  47. $('#submitButton').click();
  48. expect(document.activeElement.tagName.toLowerCase()).toEqual('body');
  49. expect(this.$username.is(':focus')).toBeFalsy();
  50. expect(this.$email.is(':focus')).toBeFalsy();
  51. });
  52. it('set autoFocus=false for all fields', function() {
  53. this.bv
  54. .addField('username', {
  55. autoFocus: false
  56. })
  57. .addField('email', {
  58. autoFocus: false
  59. });
  60. this.$username.val('user_name');
  61. this.$email.val('invalid#email');
  62. $('#submitButton').click();
  63. expect(document.activeElement.tagName.toLowerCase()).toEqual('body');
  64. expect(this.$username.is(':focus')).toBeFalsy();
  65. expect(this.$email.is(':focus')).toBeFalsy();
  66. });
  67. it('set different autoFocus value for fields', function() {
  68. this.bv
  69. .addField('username', {
  70. autoFocus: false
  71. })
  72. .addField('email', {
  73. autoFocus: true
  74. });
  75. this.$username.val('');
  76. this.$email.val('invalid_email');
  77. $('#submitButton').click();
  78. expect(this.$username.is(':focus')).toBeFalsy();
  79. expect(this.$email.is(':focus')).toBeTruthy();
  80. expect($(document.activeElement).attr('name')).toEqual('email');
  81. });
  82. });