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

使用AMIB波斯日历日期选择器时如何监听日期变更触发事件?

问题原因

你绑定的input、propertychange事件仅能响应用户手动输入内容的操作,日期选择器通过JS代码修改输入框值的行为,默认不会触发这类原生事件,所以你的逻辑没有执行。

解决方法

直接使用AMIB.persianCalendar内置的onchange回调配置即可,该回调会在用户点选日期完成后自动触发,你可以把需要执行的逻辑写在回调函数内。

修改后的完整代码如下:

<div class="col-lg-3 col-md-3 col-xs-12">
    <label for="homeWorkStartDate">From: </label>
    <input type="text" id="homeWorkStartDate" class="pdate form-control" />
    <input type="hidden" id="txtHomeWorkStartDate" />
    <script>
        var objCal1 = new AMIB.persianCalendar('homeWorkStartDate', {
            extraInputID: 'txtHomeWorkStartDate',
            extraInputFormat: 'YYYY-MM-DD',
            // 新增日期变更回调
            onchange: function() {
                alert("hi");
                // 可直接获取选中的日期值处理逻辑
                const selectedStartDate = document.getElementById('txtHomeWorkStartDate').value;
                console.log('选中的开始日期:', selectedStartDate);
            }
        });
    </script>
</div>
<div class="col-lg-3 col-md-3 col-xs-12">
    <label for="homeWorkEndDate">To: </label>
    <input type="text" id="homeWorkEndDate" class="pdate form-control" />
    <input type="hidden" id="txtHomeWorkEndDate" />
    <script>
        // 注意:原代码两个日历实例变量名重复,这里修改为objCal2避免覆盖
        var objCal2 = new AMIB.persianCalendar('homeWorkEndDate', {
            extraInputID: 'txtHomeWorkEndDate',
            extraInputFormat: 'YYYY-MM-DD',
            onchange: function() {
                alert("hi");
                const selectedEndDate = document.getElementById('txtHomeWorkEndDate').value;
                console.log('选中的结束日期:', selectedEndDate);
            }
        });
    </script>
</div>

其他可选方案

如果你不方便修改日历初始化代码,也可以通过监听隐藏输入框的变化实现,代码如下:

// 监听隐藏域的属性变化
const observer = new MutationObserver(() => {
    alert("hi");
    const startDate = $('#txtHomeWorkStartDate').val();
    const endDate = $('#txtHomeWorkEndDate').val();
    console.log(startDate, endDate);
});
// 绑定两个隐藏域的value属性监听
['txtHomeWorkStartDate', 'txtHomeWorkEndDate'].forEach(id => {
    observer.observe(document.getElementById(id), {
        attributes: true,
        attributeFilter: ['value']
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:36:03