【泛微OA_E8】1.结束日期减开始日期的天数差值传给文本框;2.结束日期不能小于开始日期,否则清空结束日期并弹出提示。

【泛微OA_E8】1.结束日期减开始日期的天数差值传给文本框;2.结束日期不能小于开始日期,否则清空结束日期并弹出提示。 实现效果在开始日期和结束日期输入框输入值后自动计算两个日期之间的天数差并显示在指定文本框中。主要功能包括1) 验证结束日期不能小于开始日期否则清空结束日期并弹出提示2) 将日期差值计算为天数包含起止日。使用的js代码var ksrqfield22259;//开始日期 var jsrqfield22260;//结束日期 var ts field22277;//天数 function rqjs() { // 获取开始日期和结束日期的值 var startDateVal jQuery(# ksrq).val(); var endDateVal jQuery(# jsrq).val(); // 清空天数输入框 jQuery(# ts).val(); // 检查日期是否完整。日期不完整会导致天数默认为NaN if (!startDateVal || !endDateVal) { return; // 日期不完整则不计算 } // 解析日期为Date对象通过split(-)将类似 2025-09-16 的日期字符串拆分为数组例如startDateParts会变成[2025, 09, 16] var startDateParts startDateVal.split(-); var endDateParts endDateVal.split(-); //前面的代码已经通过split(-)将日期字符串拆分为数组这里使用 parseInt 将拆分后的年、月、日字符串转换为整数才能被Date对象识别。 var startDate new Date( parseInt(startDateParts[0]), //JS的Date对象中月份是从0 开始计数的0 表示 1 月1 表示 2 月...11 表示 12 月。而实际输入的日期字符串中月份是 01-121-12 月因此需要减 1 才能匹配Date对象的月份规则。 parseInt(startDateParts[1]) - 1, // 月份从0开始。 parseInt(startDateParts[2]) ); var endDate new Date( parseInt(endDateParts[0]),// 年取拆分后数组的第0项年份字符串转换为整数 parseInt(endDateParts[1]) - 1,// 月取拆分后数组的第1项月份字符串转换为整数后减1 parseInt(endDateParts[2])// 日取拆分后数组的第2项日期字符串转换为整数 ); // 验证结束日期不能小于开始日期 if (endDate startDate) { alert(结束日期不能小于开始日期); // 清空结束日期 jQuery(# jsrq).val(); jQuery(# jsrq span).text(); return; } // 计算日期差毫秒 var timeDiff endDate - startDate; // 转换为天数1天 24*60*60*1000毫秒 var dayDiff Math.floor(timeDiff / (1000 * 3600 * 24)) 1; // 1表示包含起止日期 // 将结果赋值到天数字段 jQuery(# ts).val(dayDiff); }js代码完整版script typetext/javascript var ksrqfield22259;//开始日期 var jsrqfield22260;//结束日期 var ts field22277;//天数 jQuery(document).ready(function(){ jQuery(#ksrq).bindPropertyChange(function(obj) { rqjs(); }); jQuery(#jsrq).bindPropertyChange(function(obj) { rqjs(); }); jQuery(# jsrq).val(); jQuery(# jsrq span).text(); }); function rqjs() { var startDateVal jQuery(# ksrq).val(); var endDateVal jQuery(# jsrq).val(); jQuery(# ts).val(); if (!startDateVal || !endDateVal) { return; // 日期不完整则不计算 } // 解析日期为Date对象通过split(-)将类似 2025-09-16 的日期字符串拆分为数组例如startDateParts会变成[2025, 09, 16] var startDateParts startDateVal.split(-); var endDateParts endDateVal.split(-); //使用 parseInt 将拆分后的年、月、日字符串转换为整数。 var startDate new Date( parseInt(startDateParts[0]), //JS的Date对象中月份是从0 开始计数的0 表示 1 月1 表示 2 月...11 表示 12 月。而实际输入的日期字符串中月份是 01-121-12 月因此需要减 1 才能匹配Date对象的月份规则。 parseInt(startDateParts[1]) - 1, // 月份从0开始。 parseInt(startDateParts[2]) ); var endDate new Date( parseInt(endDateParts[0]),// 年取拆分后数组的第0项年份字符串转换为整数 parseInt(endDateParts[1]) - 1,// 月取拆分后数组的第1项月份字符串转换为整数后减1 parseInt(endDateParts[2])// 日取拆分后数组的第2项日期字符串转换为整数 ); // 验证结束日期不能小于开始日期 if (endDate startDate) { alert(结束日期不能小于开始日期); // 清空结束日期 jQuery(# jsrq).val(); jQuery(# jsrq span).text(); return; } // 计算日期差毫秒 var timeDiff endDate - startDate; // 转换为天数1天 24*60*60*1000毫秒 var dayDiff Math.floor(timeDiff / (1000 * 3600 * 24)) 1; // 1表示包含起止日期 // 将结果赋值到天数字段 jQuery(# ts).val(dayDiff); } /script