Mam pewne sprawdzanie poprawności po stronie klienta, które sprawdza, czy wartość EndDate
jest większa lub równa StartDate
. Sprawdzanie poprawności działa, ale nie jest uruchamiane tak, jakbym chciał. Chciałbym wystrzelić tak szybko, jak tylko data zostanie wybrana w datepicker na EndDate
. Jak mogę to zrobić? Próbowałem następujące: kodJak wyzwalać sprawdzanie poprawności, które ma wystąpić w datepicker jQuery UI po wybraniu daty?
Datepicker:
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
onClose: function() {
$(this).focusout();
}
});
Kod weryfikacyjny:
$("#EndDate").focusout(function() {
jQuery.validator.addMethod('datetimegreaterthanorequal', function (value, element, params) {
var startDateValue = $(params.element).val();
return Date.parse(value) >= Date.parse(startDateValue);
}, '');
jQuery.validator.unobtrusive.adapters.add('datetimegreaterthanorequal', ['startdate'], function (options) {
var prefix = options.element.name.substr(0, options.element.name.lastIndexOf('.') + 1),
other = options.params.startdate,
fullOtherName = appendModelPrefix(other, prefix),
element = $(options.form).find(':input[name=' + fullOtherName + ']')[0];
options.rules['datetimegreaterthanorequal'] = {
element: element
};
if (options.message) {
options.messages['datetimegreaterthanorequal'] = options.message;
}
});
function appendModelPrefix(value, prefix) {
if (value.indexOf('*.') === 0) {
value = value.replace('*.', prefix);
}
return value;
}
})
Czy wypróbowałeś zdarzenie 'onSelect:'? –
Tak, mam. Coś dziwnego, zauważam, że kiedy umieszczam alert w mojej walidacji, wydaje mi się, że jest dobrze, gdy wybieram datę, ale walidacja już nie działa? Sprawdzanie poprawności działa dobrze, jeśli usunę część 'focusout', ale nie odpali ona, jak tego chcę. –