Причина, по которой событие изменения не вызывается, заключается в том, что значение изменяется программно, а не пользователем, после чего поле ввода получает фокус. После потери фокуса поле ввода не обнаруживает изменений, так как значение не изменяется в течение времени фокусировки виджета.
Я бы предложил использовать прослушиватель событий onBlur () TextInput для изменения поля to_date, которое запускается, как только входной виджет теряет фокус:
$('.dateinput').blur(function() {
// Calculate to_date here
})