You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:预编程文本框中计算并显示不可编辑的日期天数差

问题修复与实现方案

先给你捋下当前代码里的核心问题:

  • <readonly>是无效的标签写法,应该给用于展示结果的输入框加readonly属性
  • 计算出numberOfDays后完全没做输出操作,等于白算
  • 表单部分的HTML语法彻底错了,<form action = value = numberofdays>不符合规范
  • 直接用Date.parse()存在兼容性问题,部分日期格式可能解析失败
  • 要确保页面已经加载了jQuery,否则$函数会报错

下面是修正后的完整实现代码,直接替换你原来的代码即可:

<script>
$(function() {
    // 从元素380获取日期文本:如果是input元素用.val(),普通元素用.html()
    var dateData = $('#data_380_1').val() || $('#data_380_1').html();
    // 容错处理:如果日期解析失败,给出提示
    var targetDate = new Date(dateData);
    if (isNaN(targetDate.getTime())) {
        $('#days-difference').val('日期格式错误');
        return;
    }
    var today = new Date();
    // 清空时间部分,避免当天不同时段导致计算偏差
    today.setHours(0, 0, 0, 0);
    targetDate.setHours(0, 0, 0, 0);
    // 计算天数差
    var timeDiff = Math.abs(today - targetDate);
    var numberOfDays = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
    
    // 将结果写入不可编辑的输入框
    $('#days-difference').val(numberOfDays);
});
</script>

<!-- 用于展示结果的不可编辑输入框 -->
<input type="text" id="days-difference" readonly>

关键细节说明:

  • 先确认#data_380_1的类型:如果是日期选择器这类输入框,用.val()取值;如果是普通文本元素,用.html(),代码里做了兼容处理
  • 清空日期的时分秒是为了保证“当天”和“当天”的计算结果是0天,不会因为时间差出现负数或1天的误差
  • 加了日期解析的容错判断,避免非法日期导致整个脚本崩溃
  • 展示结果的输入框通过readonly属性实现不可编辑,完全满足需求

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:48:29