4

我有一个telerik:RadDatePicker通过在后面的代码中将 MaxDate 设置为今天来限制用户选择未来日期。这工作得很好。但是当用户输入一个大于今天的日期时,它只会显示一个!在日期选择器中,如下所示:

在此处输入图像描述

相反,我想向用户显示一条错误消息“不允许未来日期”我该如何实现?以下是现有代码:

<telerik:RadDatePicker CssClass="cssDate" ID="fromDate" runat="server" 
 Skin="Vista">
 <DateInput ID="DateInput1" runat="server" LabelCssClass="datePick" Skin="Vista">
  </DateInput>
 <Calendar ShowRowHeaders="false" ID="Calendar1" runat="server" UseRowHeadersAsSelectors="False" UseColumnHeadersAsSelectors="False"
ViewSelectorText="x" Skin="Vista">
</Calendar>
<DatePopupButton CssClass="rcCalPopup"></DatePopupButton>
 </telerik:RadDatePicker>

以及我设置最大日期的代码:

  fromDate.MaxDate = DateTime.Now;
4

4 回答 4

4

经过几天的研究并询问爷爷谷歌,他向我提供了telerik官方论坛的链接,他们确认这是无法做到的。

链接到我想说的。

回复说“实际上我们已经稍微修改了错误处理逻辑,因为我们最初的实现看起来不太直观。如果输入垃圾输入或选择了超出范围的日期,控件将在内部将其值设置为 null;可见输入字段不会清除其内容,但会以无效样式显示它们,直到输入有效值。但是,您仍然需要在输入组件的客户端 OnError 事件处理程序中处理可能的解析错误(您可以在此处找到另一个示例) 就好像输入不包含有效日期一样,它将向服务器发布空值,并且无法关闭此功能。

希望这条信息对其他人有帮助:)。

于 2012-07-09T06:56:45.787 回答
0

例如,您可以通过不允许用户通过键入日期和仅使用日历控件来输入日期来解决此问题;

<telerik:RadDatePicker ID="dt" runat="server" 
                        EnableTyping="false" onkeydown="javascript:return false;" ...... />
于 2015-03-03T13:34:59.703 回答
0

使用 OnError 逻辑...

function tbApplyTime2_dateError(sender, args) {

<DateInput ClientEvents-OnError="tbApplyTime2_dateError" />

处理进来的错误类型:

switch (args.get_reason()) {
            case Telerik.Web.UI.InputErrorReason.ParseError:
                validationMessageLabel.text('Invalid Date entered');
                break;
            case Telerik.Web.UI.InputErrorReason.OutOfRange:
                validationMessageLabel.text('Date must be after sent time');
                break;
}
于 2014-07-01T06:42:07.187 回答
0

此代码有效,它显示一条警报消息,并在输入未来日期时将日期重置为其先前的值。

<script type="text/javascript">

    function ValidateDate(sender,args) {
        var datePicker = $find("<%=RadDatePicker1.ClientID%>");
        var todayDate = new Date("<%= System.DateTime.Today %>");
        todayDate.setHours(0, 0, 0, 0);

        if (args.get_newDate() > todayDate) {
            datePicker.set_selectedDate(args.get_oldDate());
            alert("Can not enter future dates.");
        }
    }

</script>

<telerik:RadDatePicker ID="RadDatePicker1"  runat="server" ClientEvents-OnDateSelected="ValidateDate">
    <Calendar ShowRowHeaders="false"></Calendar>
</telerik:RadDatePicker>
于 2015-09-03T13:42:52.553 回答