71 lines
2.9 KiB
JavaScript
71 lines
2.9 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'
|
|
});
|
|
}
|
|
);
|