Ненавязчивый валидатор сравнения дат

99
11

Поэтому я следил за этим учебным пособием здесь, и он показывает вам, как проверять даты по сравнению друг с другом. Я получаю сообщение об ошибке в первом блоке кода, который я прокомментировал, и он говорит: "Невозможно получить элемент свойства" неопределенной или нулевой ссылки ", который исходит из этой строки кода customValidation.formValidator = $ (event.data.source).closest('form'). data ('validator') Кто-нибудь знает об этом, поэтому я не получаю сообщение об ошибке. Я использую последнюю ненавязчивую проверку

window.customValidation = window.customValidation ||
{
relatedControlValidationCalled: function (event) {
if (!customValidation.activeValidator) {
customValidation.formValidator = $(event.data.source).closest('form').data('validator');
}

// code error below
customValidation.formValidator.element($(event.data.target));
},
relatedControlCollection: [],
formValidator: undefined,
addDependatControlValidaitonHandler: function (element, dependentPropertyName) {
var id = $(element).attr('id');
if ($.inArray(id, customValidation.relatedControlCollection) < 0) {
customValidation.relatedControlCollection.push(id);
$(element).on(
'blur',
{ source: $(element), target: $('#' + dependentPropertyName) },
customValidation.relatedControlValidationCalled);
}
}
};

адаптер:

$.validator.unobtrusive.adapters.add('comparedates', ['otherpropertyname', 'allowequality'],
function (options) {
options.rules['comparedates'] = options.params;
if (options.message) {
options.messages['comparedates'] = options.message;
}
}
);

метод проверки достоверности:

$.validator.addMethod('comparedates', function (value, element, params) {
var otherFieldValue = $('input[name="' + params.otherpropertyname + '"]').val();
if (otherFieldValue && value) {
var currentValue = Date.parse(value);
var otherValue = Date.parse(otherFieldValue);
if ($(element).attr('name').toLowerCase().indexOf('begin') >= 0) {
if (params.allowequality) {
if (currentValue > otherValue) {
return false;
}
} else {
if (currentValue >= otherValue) {
return false;
}
}
} else {
if (params.allowequality) {
if (currentValue < otherValue) {
return false;
}
} else {
if (currentValue <= otherValue) {
return false;
}
}
}
}
customValidation.addDependatControlValidaitonHandler(element, params.otherpropertyname);
return true;
}, '');

спросил(а) 2021-01-25T18:10:44+03:00 4 месяца, 3 недели назад
1
Решение
90

Возможно, вы загружаете этот код слишком рано, прежде чем форма находится в DOM. Убедитесь, что ваш код защищен $ (document).ready (ваш код здесь);

ответил(а) 2021-01-25T18:10:44+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема