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

JSP中如何阻止jQuery datepicker在表单提交时清空日期

问题原因

  1. 你给表单设置的onsubmit="return false"仅能阻止浏览器默认触发的表单提交行为(比如点击type="submit"类型的按钮触发的提交),你在search函数中主动调用document.forms[2].submit()属于JavaScript主动触发的提交,不会触发表单的onsubmit事件校验,因此表单还是会完成同步提交,页面刷新后输入框内的日期自然被清空。
  2. 若采用同步提交逻辑,服务端返回页面时没有将提交的日期参数回填到fdate、tdate两个输入框中,也是刷新后日期消失的直接原因。

解决方案

方案1:改用AJAX异步提交(推荐,无需刷新页面)

修改search函数,去掉原生表单提交逻辑,改为异步请求,页面不会刷新,选中的日期会自然保留:

function search() {
    const fromDate = $('#fdate').val();
    const toDate = $('#tdate').val();
    $.post('refund', {
        actionType: 'search',
        fromDate: fromDate,
        toDate: toDate
    }, function(response) {
        // 此处处理请求返回结果,比如渲染查询列表等逻辑
    })
}

方案2:保留同步提交,增加回填逻辑

如果业务必须使用同步提交,只需要在服务端渲染页面时,将提交的日期参数回填到日期输入框中即可:

<!-- 回填起始日期 -->
<input class="form-control border-radius-input"
    onkeypress="return Date1(event);" maxlength="10"
    id="fdate" type="text" placeholder="yyyy-mm-dd"
    value="${你后台存储的表单参数.fromDate}">

<!-- 回填结束日期 -->
<input class="form-control border-radius-input"
    onkeypress="return Date1(event);" maxlength="10"
    id="tdate" type="text" placeholder="yyyy-mm-dd"
    value="${你后台存储的表单参数.toDate}">

其他注意事项

你的代码中存在两个id="dtp_input2"的隐藏元素,id重复可能导致datepicker绑定异常,建议修改为唯一id避免潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:45:05