日期比较验证程序问题

时间:2015-06-03 02:53:52

标签: asp.net validation date datetime

我有比较日期:

日期自=日期时间选择器, 日期至=日期时间选择器。

我在每个Datetime选择器中有2个比较验证器。 1.将验证器与运算符DataTypeCheck进行比较 2.比较验证器以比较日期和日期。

我的计划中的日期时间格式为(DD / MM / YYY)(Culture =“en-GB”)

如果我输入DateFrom = 15/01/2015和DateTo = 01/01/2015,将执行第二个验证器。 “日期来自不能大于日期”。 (这个很好)

如果我输入DateFrom = 32/01/2015和DateTo = 01/01/2015,将执行第一个验证器。 “日期无效”。 (这个很好)

但如果我键入DateFrom = 01/01/2015和DateTo = 32/01/2015,将执行第一个和第二个验证器。 “日期无效”“日期来自不能大于日期”。 (这是问题所在)

如果输入DateTo,如何只执行1个验证器? 如果我输入DateTo = 32/01/2015,验证器只是“日期无效”

这是我的代码

 <tr>
                        <td style="width: 96px" class="text">APD Date
                        </td>
                        <td style="width: 800px">
                            <asp:TextBox
                                AutoPostBack="false"
                                runat="server"
                                ID="txtAPDDateStart"
                                CssClass="textbox"
                                Width="100px" />
                            <asp:ImageButton
                                ID="imgApprovalDateStart"
                                runat="server"
                                ImageUrl="~/Images/Calendar/Calendar.gif"
                                CausesValidation="False" />
                            <asp:RequiredFieldValidator
                                CssClass="textError"
                                ID="RequiredFieldValidator46"
                                ValidationGroup="Submit"
                                runat="server"
                                ErrorMessage="*"
                                ControlToValidate="txtAPDDateStart"
                                EnableClientScript="true"
                                Enabled="true"
                                SetFocusOnError="true"
                                Display="Dynamic"></asp:RequiredFieldValidator>

                            <asp:CompareValidator ID="cpvApprovalDateFromValidator" runat="server" ControlToValidate="txtAPDDateStart" CssClass="textError" Display="Dynamic" ErrorMessage="Date is not valid" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
                            <asp:Label runat="server" CssClass="text" Text="To"></asp:Label>
                            <cc1:MaskedEditExtender
                                ID="meeApprovalDateStart"
                                runat="server"
                                TargetControlID="txtAPDDateStart"
                                Mask="99/99/9999"
                                MessageValidatorTip="true"
                                MaskType="Date"
                                AcceptNegative="Left"
                                ErrorTooltipEnabled="True" />
                            <cc1:CalendarExtender
                                ID="ceApprovalDateStart"
                                Format="dd/MM/yyyy"
                                runat="server"
                                TargetControlID="txtAPDDateStart"
                                PopupButtonID="imgApprovalDateStart" />

                            <asp:TextBox ID="txtAPDDateEnd"
                                runat="server" AutoPostBack="false"
                                CssClass="textbox"
                                Width="100px" />
                            <asp:ImageButton ID="imgApprovalDateEnd"
                                runat="server"
                                CausesValidation="False"
                                ImageUrl="~/Images/Calendar/Calendar.gif" />
                            <cc1:MaskedEditExtender
                                ID="meeApprovalDateEnd"
                                runat="server"
                                TargetControlID="txtAPDDateEnd"
                                Mask="99/99/9999"
                                MessageValidatorTip="true"
                                MaskType="Date"
                                AcceptNegative="Left"
                                ErrorTooltipEnabled="True" />
                            <cc1:CalendarExtender
                                ID="ceApprovalDateEnd"
                                Format="dd/MM/yyyy"
                                runat="server"
                                TargetControlID="txtAPDDateEnd"
                                PopupButtonID="imgApprovalDateEnd" />
                            <asp:RequiredFieldValidator
                                CssClass="textError"
                                ID="RequiredFieldValidator1"
                                ValidationGroup="Submit"
                                runat="server"
                                ErrorMessage="*"
                                ControlToValidate="txtAPDDateEnd"
                                EnableClientScript="true"
                                Enabled="true"
                                SetFocusOnError="true"
                                Display="Dynamic"></asp:RequiredFieldValidator>
                            <asp:CompareValidator ID="cpvApprovalDateToValidator" runat="server" ControlToValidate="txtAPDDateEnd" CssClass="textError" Display="Dynamic" ErrorMessage="Date is not valid" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
                            &nbsp;<asp:CompareValidator ID="cpvApprovalDateValidator" runat="server" ControlToCompare="txtAPDDateStart" ControlToValidate="txtAPDDateEnd" CssClass="textError" Display="Dynamic" ErrorMessage="Date From cannot be greater than Date To" Operator="GreaterThanEqual" Type="Date"></asp:CompareValidator>
                        </td>
                    </tr>

1 个答案:

答案 0 :(得分:0)

您好,您可以使用javascript来验证您的约会 这是下面的代码:

&#13;
&#13;
function ValidateDate1() {
            //debugger;

            var alenddt = document.getElementById('<%= Yourstartdatetextboxid.ClientID %>').value;
            if (alenddt.length == 10) {
                var splits = alenddt.split("/");
                var dt = new Date(splits[1] + "/" + splits[0] + "/" + splits[2]);
                //Validation for Dates

                if (dt.getDate() == splits[0] && dt.getMonth() + 1 == splits[1]

                    && dt.getFullYear() == splits[2]) {

                }

                else {
                    document.getElementById('<%= errormesssageoflabelid.ClientID %>').style.display = 'inline';
                    document.getElementById('<%= Yourstartdatetextboxid.ClientID %>').value = "";
                    hideuser();
                    return;

                }
            }
        }
&#13;
&#13;
&#13;

并在此函数中隐藏用户代码以在5秒后隐藏错误标签消息

&#13;
&#13;
function hideuser() {
            window.setTimeout(function () {
                // This will execute 5 seconds later
                var label = document.getElementById('<%=lbMessage.ClientID %>');
               
               
                if (label != null) {
                    label.style.display = 'none';
                }
               
            }, 5000);
        }
&#13;
&#13;
&#13;

并从您的开始文本框中调用此函数,例如onkeyup =&#34; ValidateDate()&#34;

与endtextbox相同,因此您可以在输入错误日期后看到文本框文本为空白,并且消息将显示无效日期 供您参考,请访问以下网站:link