如果另一个字段的值发生变化,我需要更新一个字段的值。我想要更新的字段包含时间戳,其值可能更改的字段包含日期(yyyy-MM-dd)。更改是通过日历选择器进行的,这可能是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上都进行了测试。
答案 0 :(得分:1)
这个日历还定义了一个setReturnFunction,它要求函数的名称得到结果。
所以我认为您需要将其设置为将接收结果的函数的名称,填写您的输入并触发您可能喜欢的任何其他功能。
类似的东西:
<script>
function dateSelected(y,m,d){
// Fill in your input as probably it will not be filled.
// Trigger any additional functionality
updateTimestamp();
var dateField = document.getElementById("startdate");
dateField.value = y + "-" + m + "-" + d;
}
var cal = new CalendarPopup();
cal.setReturnFunction('dateSelected');
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>
注意:从日历开始,代码中的很多内容都可以改进。