Files
edx-platform/lms/static/js/course_survey.js
Eric Fischer 5bc6b31e29 eslint --fix
2017-12-08 14:38:41 -05:00

94 lines
3.3 KiB
JavaScript

$(function() {
// adding js class for styling with accessibility in mind
$('body').addClass('js');
// form field label styling on focus
$('form :input').focus(function() {
$("label[for='" + this.id + "']").parent().addClass('is-focused');
}).blur(function() {
$('label').parent().removeClass('is-focused');
});
$('.status.message.submission-error').addClass('is-hidden');
toggleSubmitButton(true);
$('#survey-form').on('submit', function() {
/* validate required fields */
var $inputs = $('#survey-form :input');
$('.status.message.submission-error .message-copy').empty();
var cancel_submit = false;
$inputs.each(function() {
/* see if it is a required field and - if so - make sure user presented all information */
if (typeof $(this).attr('required') !== typeof undefined) {
var val = $(this).val();
if (typeof(val) === 'string') {
if (val.trim().length === 0) {
var field_label = $(this).parent().find('label');
$(this).parent().addClass('field-error');
$('.status.message.submission-error .message-copy').append("<li class='error-item'>" + field_label.text() + '</li>');
cancel_submit = true;
}
} else if (typeof(val) === 'object') {
/* for SELECT statements */
if (val === null || val.length === 0 || val[0] === '') {
var field_label = $(this).parent().find('label');
$(this).parent().addClass('field-error');
$('.status.message.submission-error .message-copy').append("<li class='error-item'>" + field_label.text() + '</li>');
cancel_submit = true;
}
}
}
});
if (cancel_submit) {
$('.status.message.submission-error').
removeClass('is-hidden').
focus();
$('html, body').animate({scrollTop: 0}, 'fast');
return false;
}
toggleSubmitButton(false);
});
$('#survey-form').on('ajax:error', function() {
toggleSubmitButton(true);
});
$('#survey-form').on('ajax:success', function(event, json, xhr) {
var url = json.redirect_url;
location.href = url;
});
$('#survey-form').on('ajax:error', function(event, jqXHR, textStatus) {
toggleSubmitButton(true);
json = $.parseJSON(jqXHR.responseText);
$('.status.message.submission-error').addClass('is-shown').focus();
$('.status.message.submission-error .message-copy').
html(gettext('There has been an error processing your survey.')).
stop().
css('display', 'block');
});
});
function toggleSubmitButton(enable) {
var $submitButton = $('form .form-actions #submit');
if (enable) {
$submitButton.
removeClass('is-disabled').
attr('aria-disabled', false).
removeProp('disabled');
} else {
$submitButton.
addClass('is-disabled').
attr('aria-disabled', true).
prop('disabled', true);
}
}