0

我正在尝试验证日期是否有效,这意味着它不在未来,并确保其合法日期,即 2012 年 3 月 32 日无效。我目前所拥有的仅用于验证日期是否有效,但在我将来放置日期时它不起作用。如果有人输入像 03/32/2012 这样的日期,我也会遇到问题,它会说它无效,但他们仍然可以单击保存按钮,然后会发生异常。解决此问题的最佳方法是什么。

这是我的代码:

<asp:TextBox ID="tbDate" runat="server" Text=""></asp:TextBox>
<asp:Image ID="imgCalendar" runat="server" ImageUrl="~/App_Themes/Sugar2006/images/Calendar_scheduleHS.png" ImageAlign="Middle" />
<asp:CalendarExtender ID="ce" runat="server" TargetControlID ="tbDate" PopupButtonID="imgCalendar" />        
<asp:MaskedEditExtender ID="mex" runat="server" 
                        TargetControlID="tbDate" 
                        Mask="99/99/9999" 
                        MaskType="Date"
                        MessageValidatorTip="true"
                        OnFocusCssClass="MaskedEditFocus"
                        OnInvalidCssClass="MaskedEditError" />
<asp:MaskedEditValidator ID="mev" runat="server" 
                        ControlToValidate="tbDate"
                        ControlExtender="mex" 
                        Display="Dynamic" 
                        InvalidValueMessage="This date is invalid!" Font-Bold="True" 
                        ForeColor="#D50000" />
<asp:RequiredFieldValidator runat="server" ID="DReq"
                        ControlToValidate="tbDate"
                        Display="None"
                        ErrorMessage="A Date is required." ValidationGroup="vgMyGroup"/>
<asp:ValidatorCalloutExtender runat="Server" ID="DReqE"
                        TargetControlID="DReq"
                        HighlightCssClass="validatorCalloutHighlight" />
4

2 回答 2

1

我已经设置了ValidationGroupMaskedEditValidator这解决了我的问题。为了修复不允许未来的日期,我在 .cs 文件中做了以下操作。我所有的问题都已经解决了。谢谢。:)

    protected void mev_Init(object sender, EventArgs e) {
        ((MaskedEditValidator)sender).MaximumValue = DateTime.Now.ToString("MM/dd/yyyy");
    }
于 2012-04-06T13:41:21.407 回答
0

您还可以使用CustomValidator并指向ClientValidationFunction自定义 javascript 函数。

这样的功能看起来像±

函数 validateField(source, args){ args.IsValid = true; }

在javascript中,您可以使用以下内容检查日期是否有效±

var timestamp = Date.parse(textBoxValue)

if (isNaN(timestamp)==false)
{
    var d = new Date(timestamp);

}

然后,您可以d与当前日期进行比较以检查它是否在未来。

于 2012-04-04T20:17:44.923 回答