Я пытаюсь написать Javascript, чтобы получить значение из двух текстовых входов, что должно быть довольно простым. Но что-то не так. Вот мой код:Как получить значение от ввода текста при размытии поля
<script>
jQuery(function() {
jQuery('#fromPicker, #toPicker').datepicker({ dateFormat : 'yy-mm-dd' });
jQuery('#submit').attr('disabled', 'disabled');
jQuery('#toPicker').on('blur', function() {
var fromDate = jQuery('#fromPicker').val();
var toDate = jQuery('#toPicker').val();
console.log(toDate);
if (fromDate !== '' && toDate !== '') {
if (isValidDate(fromDate) && isValidDate(toDate)) {
jQuery('#submit').removeAttr('disabled');
} else {
alert('You must enter dates in the format "yyyy-mm-dd"');
}
}
});
});
function isValidDate(dt) {
if (dt.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)) {
return true;
}
}
</script>
Когда я console.log(toDate)
однако, я получаю пустую строку. Но если я снова сделаю еще одно событие blur
(фокус и нефокусное поле с данными, все еще в нем), я получаю правильное значение. Любые идеи, почему это не работает в первый раз?
Два текстовых ввода имеют идентификаторы #fromPicker
и #toPicker
и являются jQueryUI datepickers.
РЕШЕНИЕ:
Что в конечном счете сделал то, что я хотел это:
JQuery (функция() { JQuery ('# fromPicker, #toPicker') DatePicker ({ DateFormat.: 'уу-мм-дд' });
jQuery('#submit').on('click', function() { var fromDate = jQuery('#fromPicker').val(); var toDate = jQuery('#toPicker').val(); if (fromDate !== '' && toDate !== '') { if (isValidDate(fromDate) && isValidDate(toDate)) { // do nothing } else { alert('You must enter dates in the format "yyyy-mm-dd"'); return false; } } else { return false; } }); }); function isValidDate(dt) { if (dt.match(/^[0-9]{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/)) { return true; } } </script>
Если удалить DatePicker из входов, то 'console.log' возвращает правильное значение каждый раз. Итак, как мне заставить это работать с datepicker? – sehummel