使用CustomValidator的ClientValidationFunction验证文本框未激活

时间:2013-01-21 08:29:50

标签: javascript jquery asp.net

我遇到了一些严重的问题。我有两个这样的字段,它们都被分配了带有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;
}

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

4 个答案:

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