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%24;//单位:h *24*100%100
//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之间,然后判断。