Ho una convalida sul lato client che verifica che lo EndDate
sia maggiore o uguale a StartDate
. La convalida funziona, ma non sta sparando come vorrei. Mi piacerebbe che si attivi appena è stata selezionata una data su DatePicker per EndDate
. Come posso realizzare questo? Ho provato il seguente: codice diCome posso attivare la convalida su jQuery UI datepicker una volta che è stata selezionata una data?
Datepicker:
$(".datepicker").datepicker({
changeMonth: true,
changeYear: true,
onClose: function() {
$(this).focusout();
}
});
Codice di convalida:
$("#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;
}
})
hai provato l'evento 'onSelect:'? –
Sì, ho. Qualcosa di strano che sto notando è che quando inserisco un avviso all'interno della mia convalida, sembra che stia sparando bene quando prendo una data, ma la convalida non funziona più? La convalida funziona bene se rimuovo la parte 'focusout', ma non spara come voglio. –