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

使用jQuery Datepicker时如何清除只读输入框的日期值?

解决方案

方法1:用内置setDate方法结合双击事件

jQuery UI Datepicker本身提供了setDate方法,传入null就能清除输入框的日期值。因为输入框是只读状态,我们可以给它绑定双击事件触发清除操作,无需额外添加按钮:

<input class="datepicker" readonly="readonly" type="text" />

<script>
$(".datepicker").datepicker({
    dateFormat: 'yy-mm-dd',
    yearRange: "-100:+20",
    changeYear: true 
});

// 双击输入框清除已选日期
$(".datepicker").on("dblclick", function() {
    $(this).datepicker("setDate", null);
});
</script>

方法2:给Datepicker面板添加内置清除选项

如果希望在日历弹窗内直接提供清除入口,可以通过beforeShow事件在面板底部添加一个风格统一的清除链接,不用额外UI元素:

<input class="datepicker" readonly="readonly" type="text" />

<script>
$(".datepicker").datepicker({
    dateFormat: 'yy-mm-dd',
    yearRange: "-100:+20",
    changeYear: true,
    beforeShow: function(input, inst) {
        // 避免重复创建清除链接
        if ($("#datepicker-clear-btn").length === 0) {
            $("<div id='datepicker-clear-btn' style='padding: 3px; text-align: center; cursor: pointer; color: #212529;'>清除</div>")
                .appendTo(inst.dpDiv)
                .on("click", function() {
                    $(input).datepicker("setDate", null).datepicker("hide");
                });
        }
    }
});
</script>

方法3:绑定键盘快捷键(可选)

如果用户习惯键盘操作,可以绑定Esc键来清除日期,同样无需额外UI:

<input class="datepicker" readonly="readonly" type="text" />

<script>
$(".datepicker").datepicker({
    dateFormat: 'yy-mm-dd',
    yearRange: "-100:+20",
    changeYear: true 
});

// 按下Esc键清除日期
$(".datepicker").on("keydown", function(e) {
    if (e.keyCode === 27) {
        $(this).datepicker("setDate", null);
    }
});
</script>

以上方案都保留了输入框的只读属性,也不会引入复杂UI元素,完全适配你的场景需求。

内容的提问来源于stack exchange,提问作者Eduardo Ponce de Leon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:00:57