86 lines
2.8 KiB
JavaScript
86 lines
2.8 KiB
JavaScript
var KretaForm = (function () {
|
|
var kretaform = function () {};
|
|
kretaform.validate = function (form) {
|
|
validate(form);
|
|
};
|
|
|
|
function validate(form) {
|
|
form.validate({
|
|
errorPlacement: function (error, element) {
|
|
element.attr('title', error.text());
|
|
element
|
|
.prev(
|
|
'label[for="' + $(element).attr('name').replace('_', '.') + '"]'
|
|
)
|
|
.addClass('labelError');
|
|
element
|
|
.closest('div')
|
|
.prev()
|
|
.find(
|
|
'label[for="' + $(element).attr('name').replace('_', '.') + '"]'
|
|
)
|
|
.addClass('labelError');
|
|
|
|
var container = form.find('.kreta-validation-summary');
|
|
list = container.find('ul');
|
|
|
|
if (error && error.length > 0) {
|
|
$.each(error, function (i, ival) {
|
|
$('<li/>').html(ival).appendTo(list);
|
|
});
|
|
container
|
|
.addClass('validation-summary-errors')
|
|
.removeClass('validation-summary-valid');
|
|
}
|
|
},
|
|
success: function (errorLabel) {
|
|
$(
|
|
'label[for="' + $(errorLabel).attr('for').replace('_', '.') + '"]'
|
|
).removeClass('labelError'); //Nested Model Hack
|
|
$('label[for=' + $(errorLabel).attr('for') + ']').removeClass(
|
|
'labelError'
|
|
); //DropDown Hack
|
|
errorLabel.parent('li').css({ display: 'none' });
|
|
},
|
|
showErrors: function (errorMap, errorList) {
|
|
var errorCount = this.numberOfInvalids();
|
|
|
|
this.defaultShowErrors();
|
|
$.each(errorList, function (i, ival) {
|
|
var elementId = $(ival.element).attr('id');
|
|
if (typeof elementId !== 'undefined') {
|
|
$('label[for=' + elementId + ']').addClass('labelError'); //DropDown Hack
|
|
$('label[for="' + elementId.replace('_', '.') + '"]').addClass(
|
|
'labelError'
|
|
); //Nested Model Hack
|
|
var elem = '#' + elementId + '-error';
|
|
$(elem).parent('li').css({ display: 'list-item' });
|
|
}
|
|
});
|
|
|
|
var container = form.find('.kreta-validation-summary');
|
|
var labelErrors = container.find('.labelError');
|
|
var textContents = container.find('ul');
|
|
|
|
$.each(labelErrors, function (i, element) {
|
|
if ($(element).text() === '') {
|
|
$(element).parent('li').css({ display: 'none' });
|
|
}
|
|
});
|
|
|
|
if (
|
|
errorCount > 0 ||
|
|
(typeof labelErrors !== 'undefined' && labelErrors.length > 0)
|
|
) {
|
|
container.css({ display: 'block' });
|
|
}
|
|
if (typeof textContents !== 'undefined' && textContents.text() === '') {
|
|
container.css({ display: 'none' });
|
|
}
|
|
},
|
|
ignore: "input[type='file'].ignore-validation"
|
|
});
|
|
}
|
|
|
|
return kretaform;
|
|
})();
|