234 lines
10 KiB
JavaScript
234 lines
10 KiB
JavaScript
define(function(require, exports, module) {
|
|
|
|
require('pgui.jquery.utils');
|
|
var _ = require('underscore');
|
|
|
|
(function($){
|
|
|
|
|
|
var methods =
|
|
{
|
|
init : function(options)
|
|
{
|
|
var settings = {
|
|
validate_errorClass: 'help-inline',
|
|
validate_errorPlacement: undefined,
|
|
validate_success: undefined
|
|
};
|
|
|
|
if (options)
|
|
$.extend(settings, options);
|
|
|
|
|
|
if (this && this.length > 0)
|
|
{
|
|
require(["jquery/jquery.validate"], _.bind(function()
|
|
{
|
|
$.validator.addMethod('regexp', function (value, element, param)
|
|
{
|
|
var pattern = new RegExp(param);
|
|
return value.match(pattern);
|
|
}, 'Default regexp message');
|
|
|
|
this.each(function(index, form) {
|
|
var validationRules = { };
|
|
var errorMessageMap = { };
|
|
|
|
$(form).find('input,select,textarea').each(function(inputIndex, input) {
|
|
if ($(input).attr('data-validation') != undefined)
|
|
{
|
|
var rules = $(input).attr('data-validation').split(' ');
|
|
var validationRule = { };
|
|
var errorMessages = { };
|
|
|
|
function AppendErrorMessage(validatorName) {
|
|
if ($(input).hasAttr('data-' + validatorName + '-error-message'))
|
|
errorMessages[validatorName] =
|
|
$(input).attr('data-' + validatorName + '-error-message');
|
|
}
|
|
|
|
for(i = 0; i < rules.length; i++) {
|
|
if (rules[i] == 'email')
|
|
{
|
|
validationRule.email = true;
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'required')
|
|
{
|
|
validationRule.required = true;
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'range')
|
|
{
|
|
validationRule.range = [
|
|
$(input).attr('range-min-value'),
|
|
$(input).attr('range-max-value')
|
|
];
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'max-value')
|
|
{
|
|
validationRule.max = $(input).attr('max-value');
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'min-value')
|
|
{
|
|
validationRule.min = $(input).attr('min-value');
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'max-length')
|
|
{
|
|
validationRule.maxlength = $(input).attr('max-length');
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'min-length')
|
|
{
|
|
validationRule.minlength = $(input).attr('min-length');
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'rangelength')
|
|
{
|
|
validationRule.rangelength = [
|
|
$(input).attr('range-min-length'),
|
|
$(input).attr('range-max-length')
|
|
];
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'number')
|
|
{
|
|
validationRule.number = true;
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'digits')
|
|
{
|
|
validationRule.digits = true;
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'creditcard')
|
|
{
|
|
validationRule.creditcard = true;
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
else if (rules[i] == 'regexp')
|
|
{
|
|
validationRule.regexp = $(input).attr('regexp');
|
|
AppendErrorMessage(rules[i]);
|
|
}
|
|
}
|
|
errorMessageMap[$(input).attr('name')] = errorMessages;
|
|
validationRules[$(input).attr('name')] = validationRule;
|
|
}
|
|
|
|
});
|
|
|
|
$(form).validate({
|
|
errorClass: settings.validate_errorClass,
|
|
errorPlacement: settings.validate_errorPlacement,
|
|
errorElement: 'span',
|
|
ignore: '',
|
|
//success: settings.validate_success,
|
|
rules: validationRules,
|
|
messages: errorMessageMap,
|
|
|
|
highlight: function(label) {
|
|
var labelControl = $(label);
|
|
labelControl.closest('.control-group').addClass('error');
|
|
var group = labelControl.closest('.control-group').find('.controls');
|
|
if ((group.find('.help-inline').length == 0) && !labelControl.parent().is('.controls')) {
|
|
labelControl.appendTo(group);
|
|
}
|
|
|
|
},
|
|
success: function(label) {
|
|
$(label).closest('.control-group').removeClass('error');
|
|
$(label).remove();
|
|
|
|
}
|
|
});
|
|
});
|
|
|
|
}, this));
|
|
}
|
|
|
|
}
|
|
};
|
|
|
|
$.fn.pgui_validate_form = function( method )
|
|
{
|
|
if (methods[method])
|
|
{
|
|
return methods[method].apply(this,
|
|
Array.prototype.slice.call(arguments, 1)
|
|
);
|
|
}
|
|
else if (typeof method === 'object' || !method)
|
|
{
|
|
return methods.init.apply(this, arguments);
|
|
}
|
|
else
|
|
{
|
|
|
|
$.error('Method ' + method + ' does not exist on jQuery.pgui_effects');
|
|
}
|
|
};
|
|
|
|
})(jQuery);
|
|
|
|
function ErrorInfo(message)
|
|
{
|
|
var _message = message;
|
|
|
|
this.GetMessage = function() {
|
|
return _message;
|
|
};
|
|
|
|
this.SetMessage = function(value) {
|
|
_message = value;
|
|
}
|
|
}
|
|
|
|
function Grid_ValidateForm(form, isInsert)
|
|
{
|
|
var values = [];
|
|
var errorInfo = new ErrorInfo();
|
|
form.find('*[data-pgui-legacy-validate]').each(function(index, element)
|
|
{
|
|
values[$(element).attr('data-legacy-field-name')] = $(element).val();
|
|
});
|
|
|
|
var result;
|
|
if (isInsert)
|
|
result = InsertValidation(values, errorInfo);
|
|
else
|
|
result = EditValidation(values, errorInfo);
|
|
|
|
if (result)
|
|
return { valid: true, message: '' };
|
|
else
|
|
return { valid: false, message: errorInfo.GetMessage() };
|
|
}
|
|
|
|
function CreateErrorMessage(message) {
|
|
return $('<div class="alert alert-error"><button class="close" data-dismiss="alert"><i class="icon-remove"></i></button>' +
|
|
message + '</div>');
|
|
}
|
|
|
|
exports.ValidateSimpleForm = function (form, errorContainer, isInsert)
|
|
{
|
|
if (!form.valid())
|
|
return false;
|
|
|
|
var legacyValidateForm = Grid_ValidateForm(form, isInsert);
|
|
if (!legacyValidateForm.valid) {
|
|
errorContainer.append(CreateErrorMessage(legacyValidateForm.message));
|
|
return false;
|
|
}
|
|
else {
|
|
errorContainer.find('*').remove();
|
|
//HideLegacyErrors(errorContainer);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
});
|