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

如何使用jQuery获取Telerik RadDatePicker控件的日期值?

RadDatePicker jQuery取值失败问题修复

原代码问题说明

你的代码有两处直接导致取值失败的错误:

  • jQuery ID选择器缺少前缀:ID选择器必须以#开头,你写的$('<%= RadDatePicker1.ClientID %>')会被识别为标签选择器,根本匹配不到任何DOM元素。
  • 取值逻辑不符合RadDatePicker的渲染规则:RadDatePicker是复合控件,外层元素不是存储日期值的输入框,就算你选对外层元素,直接调用.val()也拿不到实际选中的日期。

修正方案

方案1:使用Telerik官方客户端API取值(推荐,兼容性最强)

Telerik控件都提供了稳定的客户端对象API,通过ASP.NET AJAX的$find方法拿到控件实例后,直接调用内置方法就能拿到准确值,不受控件内部DOM结构变动影响:

function validateDates(sender, args) {
    // 获取RadDatePicker客户端实例
    var datePicker = $find("<%= RadDatePicker1.ClientID %>");
    // 获取选中的Date日期对象,未选择时返回null
    var selectedDate = datePicker.get_selectedDate();
    // 如果需要获取输入框显示的格式化字符串,可以用下面的代码
    // var dateDisplayText = datePicker.get_dateInput().get_value();

    alert(selectedDate ? selectedDate.toLocaleDateString() : "未选择日期");
    return true;
}

方案2:纯jQuery选择内部输入框取值

如果你坚持用jQuery方法,需要精准定位到控件内部实际承载值的input元素——RadDatePicker渲染后,带riTextBox样式类的input才是日期输入框:

function validateDates(sender, args) {
    // 注意ID选择器加#前缀,再查找内部的输入框元素
    var dateValue = $('#<%= RadDatePicker1.ClientID %> .riTextBox').val();
    alert(dateValue);
    return true;
}

注意:如果你的JS代码写在独立的.js外部文件中,<%= %>服务端表达式无法被解析,这种场景可以给RadDatePicker设置ClientIDMode="Static"固定客户端ID,直接用固定ID选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:48:18