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

如何为Razor的EditorFor日期字段设置onchange事件?

嘿,我碰到过一模一样的问题!Razor的EditorFor生成的原生日期输入框,手动改值能触发change,但点日历选日期就没反应——这是因为不少浏览器的原生日期选择器在通过面板选值时,不会立刻触发标准的change事件,得等输入框失去焦点才会触发。给你几个靠谱的解决办法:

1. 同时监听input和change事件

input事件会在输入框的值任何变化时触发,包括通过日历面板选择日期的情况,完美覆盖手动输入和日历选择两种场景。代码这么写:

$("#AvailableEndDateTimeUtc").on("input change", function () {
    alert("ok");
    // 这里写你的业务逻辑
});

这样不管是手动敲键盘改日期,还是点日历选日期,都能触发你的回调函数。change事件可以作为补充,处理一些手动输入后失去焦点的场景(虽然input也能覆盖,但多监听一个没坏处)。

2. 确认控件ID的正确性(排查小坑)

虽然你说手动修改有效,但还是提一句:如果你的EditorFor是在嵌套模型、局部视图或者表单里,Razor可能会自动给ID加前缀(比如Model_AvailableEndDateTimeUtc)。可以打开浏览器开发者工具(F12),查看生成的输入框的实际ID,确保jQuery选择器里的ID和实际一致。

3. 针对第三方日期插件的特殊处理(如果用到的话)

如果你后来换成了第三方日期插件(比如jQuery UI Datepicker),那得监听插件自带的事件,比如onSelect:

$("#AvailableEndDateTimeUtc").datepicker({
    onSelect: function(dateText) {
        alert("ok");
        // 你的逻辑
    }
});

不过看你的描述,应该是用的原生HTML5日期输入框,所以第一个方案就足够了。

内容的提问来源于stack exchange,提问作者Pierre-Adrien Maison

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:29:03