我遇到了一些严重的问题。我有两个这样的字段,它们都被分配了带有jquery的datepickers。
<asp:TextBox ID="RTRP" runat="server" CssClass="textEntry" Width="120"></asp:TextBox>
<asp:CustomValidator runat="server" ID="CustomValidator3"
ControlToValidate="RTRP"
Text="No date selected"
ValidateEmptyText="True"
ClientValidationFunction="clientValidate"
Display="Static">
</asp:CustomValidator>
<asp:TextBox ID="ContEd" runat="server" CssClass="textEntry" Width="120"></asp:TextBox>
<asp:CustomValidator runat="server" ID="CustomValidator1"
ControlToValidate="ContEd"
Text="No date selected"
ValidateEmptyText="True"
ClientValidationFunction="clientValidate"
Display="Static">
</asp:CustomValidator>
使用以下javascript来验证它。
$("#<%=RTRP.ClientID %>").datepicker();
$("#<%=ContEd.ClientID %>").datepicker();
function clientValidate(sender, args) {
args.IsValid = args.Value.length > 0;
}
两者都获得了他们的日期选择器,但验证功能只是拒绝被触发并始终允许表单提交。我完全迷失在这里,我做错了什么?
答案 0 :(得分:1)
您正在检查字符串length
是否小于0(永远不会是真的):
function clientValidate(sender, args) {
if (args.Value.length < 0) {
args.IsValid = false;
} else {
args.IsValid = true;
}
}
我不确定这是否是你想要的(你可以简单地使用RequiredFieldValidator
),但......
function clientValidate(sender, args) {
args.IsValid = args.Value.length > 0;
}
答案 1 :(得分:0)
如果你将$ .datepicker()行为分配给任何文本,并运行页面..你会发现你覆盖jQuery datepicker的文本框有css set display:none ..这可能是自定义验证没有的原因获得该文本框......
答案 2 :(得分:0)
为什么不使用
<asp:RequiredFieldValidator id="id" controltovalidate="controlname" erormessage="please enter the dates">
</asp:RequiredFieldValidator>
纠正我,我错了
答案 3 :(得分:0)
将方法改为此。再试一次
function clientValidate(sender, args)
{
if(Page_ClientValidate())
{
if (args.Value.length < 0)
{
args.IsValid = false;
} else
{
args.IsValid = true;
}
}
}