1.要求:当输入完开始和结束日期时,自动计算差值,并赋值。
2. html:
开始日期:<input name="START_TIME" id="START_TIME" exttype="datetime" class="easyui-datetimebox" data-options="formatter:formatterDateTime,onChange:getTime" value=""/>
结束日期:<input name="END_TIME" id="END_TIME" exttype="datetime" class="easyui-datetimebox" data-options="formatter:formatterDateTime,onChange:getTime"/>
缺勤天数:<input name="ABSENCE_Days" id="ABSENCE_Days" value=""/>
3. JS:
//开始和结束时间触发的是同一个onChange()事件
function getTime(){
//获取开始和结束日期的值
var startTime = $("#START_TIME").datetimebox('getValue');var endTime = $("#END_TIME").datetimebox('getValue');
//定义整数和小数部分
var day_point;var day_display;
//判断:如果某一个为空,则给天数赋值为空,否则进行计算
if(startTime=="" || endTime==""){ $("#ABSENCE_Days").val(""); }else{
//格式化日期 var st = new Date(startTime); var et = new Date(endTime);
//计算时间差并转换为天数 var time = et.getTime()-st.getTime(); var days = parseFloat(time / (24 * 60 * 60 * 1000));
//计算是否加0.5天 var days_int=Math.floor(days); var days_float=days*24$;//单位:h *24*1000 //days_float=days_float; var str=""; if(days_float==0){ $("#ABSENCE_Days").val(String(days_int)); }else if(0<days_float && days_float<=4){ $("#ABSENCE_Days").val(String(days_int)+".5"); }else{ $("#ABSENCE_Days").val(String(days_int+1)); } } }
4.结语:关键在于开始和结束的日期控件都应该触发同一个onchange事件,方才能获取到他们的值并计算,计算是否为半天关键在于小数部分是否在0到4之间,然后判断。