0

我对此有一些严重的问题。我有两个这样的字段,它们都被分配了带有 jquery 的日期选择器。

<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;
}

两者都得到了他们的日期选择器,但是验证函数只是拒绝被触发,并且总是允许表单提交。我完全迷失在这里,我做错了什么?

4

4 回答 4

1

您正在检查一个字符串length是否小于 0(这永远不会是真的):

function clientValidate(sender, args) {
    if (args.Value.length < 0) {
        args.IsValid = false;
    } else {
        args.IsValid = true;
    }
}

我不确定这是否是你想要的(你可以简单地使用 a RequiredFieldValidator),但是......

function clientValidate(sender, args) {
    args.IsValid = args.Value.length > 0;
}
于 2013-01-21T08:32:39.120 回答
0

将您的方法更改为此。然后重试

function clientValidate(sender, args)
{
  if(Page_ClientValidate())
  {
   if (args.Value.length < 0)
   {
    args.IsValid = false;
   } else
   {
    args.IsValid = true;
   }
  }
}
于 2013-01-21T08:41:23.090 回答
0

如果您将 $.datepicker() 行为分配给任何文本,并运行 page.. 您会发现覆盖 jQuery datepicker 的文本框有 css set display : none.. 所以这可能是自定义验证没有得到的原因文本框...

于 2013-01-21T08:35:39.090 回答
0

你为什么不使用

<asp:RequiredFieldValidator id="id" controltovalidate="controlname" erormessage="please enter the dates"> 
</asp:RequiredFieldValidator>

纠正我我错了

于 2013-01-21T08:36:47.840 回答