我有一个表单,用于计算两个日期之间的时间,并存储6个数字字段。
我想知道,当用户在两个日期之后开始选择时,表格会将这些值包含在内,以便表单按预期工作。
示例页面位于此处..我的意图是什么
http://jsfiddle.net/GfN5u/1/ js正在使用html
我觉得我差不多了,但本周生活对我不公平。
同样在IE 8中,选择元素会丢失其内容.....即使在jsfiddle中也是如此。
任何帮助都将不胜感激。
谢谢
<script>
var txt1 = document.Edit.StartTime.value
var txt2 = document.Edit.EndTime.value
var differenceInSeconds = (Calendar.parseDate(txt2, false).getTime() - Calendar.parseDate(txt1, false).getTime())/1000;
var val9 = differenceInSeconds/60.0/60
alert(val9)
</script>
<script>
re=/\D/g
function getGoodVal(fld) {
var val = fld.value;
if (!val) val=0;
if (isNaN(val)) {
val=val.replace(re,""); // remove all nonDigits
}
if (val=="" || isNaN(val)) val = 0; // still not a number or empty
val = parseFloat(val)
fld.value=val.toFixed(2);
return val;
}
function calc(theForm) {
var val10 = val9
var valb = getGoodVal(theForm.lunch);
var val1 = getGoodVal(theForm.TRDO);
var val2 = getGoodVal(theForm.AnnualLeave);
var val3 = getGoodVal(theForm.PersonalLeave);
var val4 = getGoodVal(theForm.WorkFromHome);
var val5 = getGoodVal(theForm.TOIL);
total = (val9-valb) + (val1+val2+val3+val4+val5);
theForm.total.value=total.toFixed(2)
}
</script>
答案 0 :(得分:2)
要在用户选择日期时计算值,请将计算链接到选择日期后调用的某个javascript事件。我注意到您试图将calc()函数链接到文本输入的onChange事件,这不起作用。您可以将calc()函数链接到Calendar.setup的onSelect属性。它看起来像这样:
Calendar.setup({
inputField : "StartTime",
trigger : "f_btn1",
onSelect : function() { this.hide(); calc(document.forms[0]); },
showTime : 12,
dateFormat : "%Y-%m-%d %I:%M %p"
});
请注意,调用calc()就像输入元素的onChange属性一样。但是,对表单的引用会更改,因为表单不是Calendar范围的一部分:document.forms [0]。
您的用户可能会有一个功能可以验证更新结束时间,以便它不能早于开始时间。