Ich habe eine clientseitige Validierung, die überprüft, ob die EndDate
größer oder gleich StartDate
ist. Die Validierung funktioniert, aber es schießt nicht so, wie ich es möchte. Ich möchte, dass es ausgelöst wird, sobald ein Datum auf dem Datepicker für EndDate
ausgewählt wird. Wie kann ich das erreichen? Ich habe versucht, die folgenden:Wie kann ich die Validierung auf jQuery UI Datepicker auslösen, nachdem ein Datum ausgewählt wurde?
Datumsauswahl-Code:
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
onClose: function() {
$(this).focusout();
}
});
Validierungscode:
$("#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;
}
})
Haben Sie das 'onSelect:' Ereignis versucht? –
Ja habe ich. Etwas Merkwürdiges, das ich bemerke, ist, dass wenn ich eine Warnung in meine Validierung einfüge, es scheint, gerade zu feuern, wenn ich ein Datum auswähle, aber die Validierung nicht mehr funktioniert? Die Validierung funktioniert gut, wenn ich den 'focusout'-Teil entferne, aber er löst nicht aus, wie ich es möchte. –