Files
edx-platform/cms/static/js/programs/utils/validation_config.js
2016-08-08 15:04:06 -04:00

71 lines
2.8 KiB
JavaScript

define([
'backbone',
'backbone.validation',
'underscore',
'gettext'
],
function(Backbone, BackboneValidation, _, gettext) {
'use strict';
var errorClass = 'has-error',
messageEl = '.field-message',
messageContent = '.field-message-content';
// These are the same messages provided by Backbone.Validation,
// marked for translation.
// See: http://thedersen.com/projects/backbone-validation/#overriding-the-default-error-messages.
_.extend(Backbone.Validation.messages, {
required: gettext('{0} is required'),
acceptance: gettext('{0} must be accepted'),
min: gettext('{0} must be greater than or equal to {1}'),
max: gettext('{0} must be less than or equal to {1}'),
range: gettext('{0} must be between {1} and {2}'),
length: gettext('{0} must be {1} characters'),
minLength: gettext('{0} must be at least {1} characters'),
maxLength: gettext('{0} must be at most {1} characters'),
rangeLength: gettext('{0} must be between {1} and {2} characters'),
oneOf: gettext('{0} must be one of: {1}'),
equalTo: gettext('{0} must be the same as {1}'),
digits: gettext('{0} must only contain digits'),
number: gettext('{0} must be a number'),
email: gettext('{0} must be a valid email'),
url: gettext('{0} must be a valid url'),
inlinePattern: gettext('{0} is invalid')
});
_.extend(Backbone.Validation.callbacks, {
// Gets called when a previously invalid field in the
// view becomes valid. Removes any error message.
valid: function(view, attr, selector) {
var $input = view.$('[' + selector + '~="' + attr + '"]'),
$message = $input.siblings(messageEl);
$input.removeClass(errorClass)
.removeAttr('data-error');
$message.removeClass(errorClass)
.find(messageContent)
.text('');
},
// Gets called when a field in the view becomes invalid.
// Adds a error message.
invalid: function(view, attr, error, selector) {
var $input = view.$('[' + selector + '~="' + attr + '"]'),
$message = $input.siblings(messageEl);
$input.addClass(errorClass)
.attr('data-error', error);
$message.addClass(errorClass)
.find(messageContent)
.text($input.data('error'));
}
});
Backbone.Validation.configure({
labelFormatter: 'label'
});
}
);