diff --git a/lms/static/js/spec/student_account/account_settings_fields_spec.js b/lms/static/js/spec/student_account/account_settings_fields_spec.js index 7746a98ffc..727a033d48 100644 --- a/lms/static/js/spec/student_account/account_settings_fields_spec.js +++ b/lms/static/js/spec/student_account/account_settings_fields_spec.js @@ -31,11 +31,14 @@ define(['backbone', var fieldData = FieldViewsSpecHelpers.createFieldData(AccountSettingsFieldViews.PasswordFieldView, { linkHref: '/password_reset', - emailAttribute: 'email' + emailAttribute: 'email', + valueAttribute: 'password' }); var view = new AccountSettingsFieldViews.PasswordFieldView(fieldData).render(); + expect(view.$('.u-field-value > button').is(':disabled')).toBe(false); view.$('.u-field-value > button').click(); + expect(view.$('.u-field-value > button').is(':disabled')).toBe(true); AjaxHelpers.expectRequest(requests, 'POST', '/password_reset', 'email=legolas%40woodland.middlearth'); AjaxHelpers.respondWithJson(requests, {'success': 'true'}); FieldViewsSpecHelpers.expectMessageContains( diff --git a/lms/static/js/student_account/views/account_settings_fields.js b/lms/static/js/student_account/views/account_settings_fields.js index 3ce7ce8546..2da3447e30 100644 --- a/lms/static/js/student_account/views/account_settings_fields.js +++ b/lms/static/js/student_account/views/account_settings_fields.js @@ -151,6 +151,7 @@ }, linkClicked: function(event) { event.preventDefault(); + this.toggleDisableButton(true); this.resetPassword(event); }, resetPassword: function() { @@ -169,9 +170,16 @@ error: function(xhr) { view.showErrorMessage(xhr); view.setMessageTimeout(); + view.toggleDisableButton(false); } }); }, + toggleDisableButton: function(disabled) { + var button = this.$('#u-field-link-' + this.options.valueAttribute); + if (button) { + button.prop('disabled', disabled); + } + }, setMessageTimeout: function() { var view = this; setTimeout(function() {