Мне нужно обновить значение одного поля, если изменяется значение другого. Поле, которое я хочу обновить, содержит метку времени, и поле, значение которого может измениться, содержит дату (yyyy-MM-dd). Изменение производится через селектор календаря, что, вероятно, является причиной того, почему события onchange
и oninput
не могут вызвать функцию.Обновить входное значение onchange/oninput другого с помощью селектора календаря
Вот мой код:
<input required class="short" type="text" id="startdate" name="startdate" value="<?php echo (isset($startdate) ? $startdate : "") ?>" oninput="updateTimestamp();" />
<input required class="short" type="text" id="startdate_u" name="startdate_u" value="<?php echo (isset($startdate_u) ? $startdate_u : "") ?>" />
<a href="#" onclick="cal.select(document.forms['project'].startdate,'anchor','yyyy-MM-dd'); return false;" name="anchor" id="anchor"><img src="images/calendar_icon.png" /></a>
<script>
var cal = new CalendarPopup();
function popup(mylink, windowname) {
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
window.open(href, windowname, 'width=500,height=300,scrollbars=yes,resizable=yes');
return false;
}
function updateTimestamp() {
var startDate = document.getElementById("startdate");
var newTimestamp = Math.round(new Date(startDate.value).getTime()/1000);
document.getElementById("startdate_u").value = newTimestamp.toString();
}
</script>
Вот ссылка на календарный код: http://www.mattkruse.com/javascript/calendarpopup/source.html
Я не использую JQuery. Ваш совет высоко ценится :) Весь сайт написан в соответствии со стандартами HTML5 - я читал, что oninput
должен делать трюк, но это не так. Протестировано как на Chrome, так и на IE 11.
Вы не получаете '.value' для' startDate' и в своем 'Math.round (новая дата (startdate)' у переменной нет прописной буквы ** D **. Попробуйте 'Math. round (new Date (startDate.value) .getTime()/1000); ' – NewToJS
Вы правы, я просто набрал те, которые объясняют опечатки. Раньше я пробовал оба с' .value' и без. alert() 'запускается – cheeseus
Просто попробовал с помощью' Math.round (new Date (startDate.value) .getTime()/1000); 'тоже - ничего. Я думаю, проблема в том, что событие' oninput' не огонь, потому что я меняю дату с помощью селектора календаря, но не знаю, как это исправить. – cheeseus