Sleepness/UberFrontendValidationBundle

View on GitHub
Resources/public/js/constraints/Length.js

Summary

Maintainability
C
1 day
Test Coverage
/**
 * Check if field has proper length
 *
 * @author Viktor Novikov <viktor.novikov95@gmail.com>
 * @constructor
 */
function UberLengthValidationConstraint(field) {
    this.message = 'Field {{ field_name }} should have more than {{ min }} characters and less than {{ max }} characters.';

    this.validate = function () {
        var error = '',
            definedDataMin = field.attr('data-min'),
            definedDataMax = field.attr('data-max'),
            fieldName = parse_field_name(field.attr('name')),
            fieldLength = field.val().length;

        if (fieldLength < definedDataMin) {
            error = this.message.replace('{{ min }}', definedDataMin);
            error = error.replace('{{ max }}', definedDataMax);
            error = error.replace('{{ field_name }}', fieldName);
            if (field.attr('data-min-message')) {
                error = field.attr('data-min-message');
            }
        }

        if (fieldLength > definedDataMax) {
            error = this.message.replace('{{ min }}', definedDataMin);
            error = error.replace('{{ max }}', definedDataMax);
            error = error.replace('{{ field_name }}', fieldName);
            if (field.attr('data-max-message')) {
                error = field.attr('data-max-message');
            }
        }

        if (definedDataMin == definedDataMax && fieldLength != definedDataMin) {
            error = 'Field ' + fieldName + ' should have exactly ' + definedDataMin + ' character(s)';
            if (field.attr('data-exact-message')) {
                error = field.attr('data-exact-message');
            }
        }

        return error;
    };
}