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

如何通过JavaScript为Ajax Calendar Extender控件设置起始日期

解决ASP.NET Ajax Calendar Extender客户端设置起始日期的问题

要通过JavaScript设置Calendar Extender的起始日期,不能直接操作DOM元素的StartDate属性——因为ASP.NET Ajax的Calendar Extender在客户端是作为**Microsoft.Web.UI.WebControls.CalendarBehavior**组件存在的,你需要先获取这个客户端组件实例,再修改它的属性。

正确实现步骤:

  1. 获取Calendar Extender的客户端组件:通过Sys.Application.findComponent()方法,传入控件的ClientID来获取组件实例。
  2. 正确解析日期字符串:由于你的日期格式是dd/MM/yyyy,直接用new Date()可能会被浏览器错误解析(部分浏览器会把dd/MM识别为MM/dd),需要手动拆分日期字符串来构建正确的Date对象。
  3. 设置组件的起始日期:调用组件的set_startDate()方法,或者直接赋值给startDate属性(驼峰式命名)。

修改后的代码:

起始日期TextBox(保留onchange事件):

<asp:TextBox ID="txtFromDate" runat="server" onchange="SetToDate();"></asp:TextBox>

JavaScript函数:

function SetToDate() {
    // 获取起始日期输入框的值
    var fromDateStr = document.getElementById('<%= txtFromDate.ClientID %>').value;
    if (!fromDateStr) return; // 为空时不处理

    // 解析dd/MM/yyyy格式的日期字符串为Date对象
    var dateParts = fromDateStr.split('/');
    // 注意:月份是0-based,所以要减1
    var startDate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);

    // 获取结束日期Calendar Extender的客户端组件
    var calToDate = Sys.Application.findComponent('<%= calToDate.ClientID %>');
    if (calToDate) {
        // 设置起始日期
        calToDate.set_startDate(startDate);
        // 或者直接赋值:calToDate.startDate = startDate;
    }
}

额外说明:

  • 确保页面已经加载完成ASP.NET Ajax框架,所以这个函数要在Sys.Application.load事件之后执行,或者直接放在页面底部(ASP.NET Ajax脚本之后)。
  • 如果你的Calendar Extender有PopupButtonID,点击按钮弹出日历的时候,也会应用新设置的起始日期限制。

内容的提问来源于stack exchange,提问作者altaaf.hussein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:32:38