2015-06-04 2 views
0

Я должен проверить дату начала меньше, чем дата окончания, а конечная дата больше, чем дата начала, используя jQuery. Приложение использует HTML 5 + Thymeleaf.Дата начала проверки даты в jQuery

код:

Проверка 1:

$('#ValidFrom').removeClass('hasDatepicker').datepicker({ 
    dateFormat: 'dd-M-yy', 
    changeMonth: true, 
    changeYear: true, 
    onSelect : ChangeEndDate 
}); 

function ChangeEndDate() { 
    var d = $("#ValidFrom").datepicker('getDate'); 
    $('#ValidTo').removeClass('hasDatepicker').datepicker({ 
     minDate : d, 
     dateFormat: 'dd-M-yy', 
     changeMonth: true, 
     changeYear: true 
    }); 
} 

Проверка 2:

$('#ValidTo').removeClass('hasDatepicker').datepicker({ 
    dateFormat: 'dd-M-yy', 
    changeMonth: true, 
    changeYear: true, 
    onSelect : ChangeStartDate 
}); 

function ChangeStartDate() { 
    var d = $("#ValidTo").datepicker('getDate'); 
    $('#ValidFrom').removeClass('hasDatepicker').datepicker({ 
     maxDate : d, 
     dateFormat: 'dd-M-yy', 
     changeMonth: true, 
     changeYear: true 
    }); 
} 

Если я использую либо один из валидаций он работает нормально. Но если я использую оба варианта, работает только проверка 1. Может ли кто-нибудь помочь в этом вопросе.

Заранее спасибо.

ответ

0

потому что в вашем методе изменения вы снова создаете дампинг, вызывая его и не пропуская функцию прослушивателя изменений снова. Например:

function ChangeStartDate() { 
    var d = $("#ValidTo").datepicker('getDate'); 
    $('#ValidFrom').datepicker("destroy"); 
    $('#ValidFrom').datepicker({ 
     maxDate : d, 
     dateFormat: 'dd-M-yy', 
     changeMonth: true, 
     changeYear: true, 
     onSelect : ChangeEndDate 
    }); 
} 

таким образом вы уничтожить DatePicker первый, а затем повторно инициализировать его с onSelect методом прилагается. Я не уверен, почему вы удаляете класс из элемента, но если вы хотите уничтожить элемент, удаление класса не является решением. вы должны вызвать функцию destroy.

+0

Спасибо, что ответили. Прошу прощения, пожалуйста, проясните меня яснее. Для меня валидация работает, когда я даю только один из двух. Но он не работает, когда я даю оба подтверждения в одно время. Я не знаю, что пошло не так. –

+0

Спасибо. Я попробовал решение. Тем не менее проблема не решена. Работает только первая проверка. Второй не делает. –

0

Попробуйте этот путь. Вы должны уничтожить сборщик, прежде чем снова начнете его. И в init picker вы должны установить опцию onSelect. Надеюсь, это поможет вам больше

$('#ValidFrom').datepicker({ 
dateFormat: 'yy-mm-dd', 
changeMonth: true, 
changeYear: true, 
onSelect : ChangeEndDate}); 

function ChangeEndDate() { 
var d = $("#ValidFrom").datepicker('getDate'); 
$("#ValidTo").datepicker("destroy"); 
$('#ValidTo').datepicker({ 
    minDate : d, 
    dateFormat: 'yy-mm-dd', 
    changeMonth: true, 
    changeYear: true, 
    onSelect : ChangeStartDate 
});} 

$('#ValidTo').datepicker({ 
dateFormat: 'yy-mm-dd', 
changeMonth: true, 
changeYear: true, 
onSelect : ChangeStartDate}); 
function ChangeStartDate() { 
var d1 = $("#ValidTo").datepicker('getDate'); 
$("#ValidFrom").datepicker("destroy"); 
$('#ValidFrom').datepicker({ 
    maxDate : d1 , 
    dateFormat: 'yy-mm-dd', 
    changeMonth: true, 
    changeYear: true, 
    onSelect : ChangeEndDate 
});} 
+0

Спасибо, что ответили. Я попробовал решение, но это не сработало. Он не отключил дату. Ожидается, что после выбора даты FROM Datepicker в TO date отключит все даты до выбранной даты FROM. И наоборот тоже не работает. –

+0

Вы пробуйте так: Создайте новый простой html и повторите тест. Я думаю, что вы немного ошибетесь –