我有比较日期:
日期自=日期时间选择器, 日期至=日期时间选择器。
我在每个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>
<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>
答案 0 :(得分:0)
您好,您可以使用javascript来验证您的约会 这是下面的代码:
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;
并在此函数中隐藏用户代码以在5秒后隐藏错误标签消息
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;
并从您的开始文本框中调用此函数,例如onkeyup =&#34; ValidateDate()&#34;
与endtextbox相同,因此您可以在输入错误日期后看到文本框文本为空白,并且消息将显示无效日期 供您参考,请访问以下网站:link