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

希吉里日期选择器(Hijri Datepicker)缺失选日后自动关闭功能求助

解决希吉里日期选择器选择日期后不自动关闭的问题

我明白你遇到的这个问题有多闹心——选完日期弹窗还一直留在页面上确实影响体验。针对这款希吉里日期选择器库,我整理了两种可行的解决方案,你可以按需尝试:

方案一:使用组件自带的auto-close属性

这款库其实内置了自动关闭的配置项,只需要在<datepicker-hijri>标签中添加auto-close属性,就能实现选择日期后弹窗自动关闭的效果。修改后的完整代码如下:

<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0">
<title>تجربة محدد التاريخ الهجري</title>
<script src="https://cdn.jsdelivr.net/gh/abublihi/datepicker-hijri@master/build/datepicker-hijri.js"></script>
<link href="https://fonts.googleapis.com/css?family=Tajawal&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" rel="stylesheet">
</head>
<style>
body { font-family: 'Tajawal', serif; }
.center { padding: 10% 0; }
input { border-radius: 4px; }
</style>
<body style="text-align: center; height: 100hv;">
<div class="center">
<h2>تجربة محدد التاريخ الهجري</h2>
<input type="text" id="calender" value="1441/02/01">
<button id="calender2" onloadeddata="console.log(this)">حدد التاريخ :</button>
<!-- 新增auto-close属性 -->
<datepicker-hijri reference="calender" placement="bottom" selected-date="1441/02/01" auto-close></datepicker-hijri>
<datepicker-hijri reference="calender2" placement="bottom" selected-date="1441/02/01" auto-close></datepicker-hijri>
</div>
</body>
</html>

方案二:手动监听事件触发关闭

如果第一种方案不生效,咱们可以通过监听日期选择事件,手动调用组件的关闭方法来实现效果。只需要在页面末尾添加一段JavaScript代码即可:

<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0">
<title>تجربة محدد التاريخ الهجري</title>
<script src="https://cdn.jsdelivr.net/gh/abublihi/datepicker-hijri@master/build/datepicker-hijri.js"></script>
<link href="https://fonts.googleapis.com/css?family=Tajawal&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css" rel="stylesheet">
</head>
<style>
body { font-family: 'Tajawal', serif; }
.center { padding: 10% 0; }
input { border-radius: 4px; }
</style>
<body style="text-align: center; height: 100hv;">
<div class="center">
<h2>تجربة محدد التاريخ الهجري</h2>
<input type="text" id="calender" value="1441/02/01">
<button id="calender2" onloadeddata="console.log(this)">حدد التاريخ :</button>
<datepicker-hijri reference="calender" placement="bottom" selected-date="1441/02/01"></datepicker-hijri>
<datepicker-hijri reference="calender2" placement="bottom" selected-date="1441/02/01"></datepicker-hijri>
</div>

<script>
// 获取所有日期选择器组件实例
const datePickers = document.querySelectorAll('datepicker-hijri');

datePickers.forEach(picker => {
    // 监听日期选择完成事件
    picker.addEventListener('dateSelected', () => {
        // 调用组件内置的close方法关闭弹窗
        picker.close();
    });
});
</script>
</body>
</html>

优先推荐第一种方案,它属于库的原生配置,更简洁省心;如果原生配置不生效,第二种手动监听的方式肯定能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:06:00