【问题标题】:Client Side Custom Validation isn't executing客户端自定义验证未执行
【发布时间】:2016-04-07 17:16:20
【问题描述】:

我目前正在使用 c# 学习 ASP.NET 4.0。我花了大约 2 个小时来研究这个问题,但我目前对如何将它应用到我自己的情况还没有足够的了解,所以我需要一对一的帮助。此外,我的错误也很可能是非常业余的,所以请不要害怕探索这种可能性。最后,感谢您的意见

我制作了一个非常基本的表单,它只为多个字段(姓名、电子邮件、确认电子邮件、家庭电话、商务电话)进行文本输入,并对所有字段进行验证。我的所有验证都有效,除了我似乎无法弄清楚为什么我的客户端 javascript 自定义验证(这只是家庭电话字段或商务电话字段具有输入的要求)没有做任何事情。服务器端验证工作正常(如果我在所有其他字段正确的情况下发布到服务器,我会得到所需的结果,但如果一个或多个其他字段无效,自定义验证不会做任何事情。)

我将尝试发布解决问题所需的所有相关代码: 如果任一文本框有文本,我的 javascript 设置验证是否有效

<script type="text/javascript">
    function ValidatePhoneNumbers(source, args)
    {
        var phoneHome = document.getElementById('<%= PhoneHome.ClientID %>');
        var phoneBusiness = document.getElementById('<%= PhoneBusiness.ClientID %>');
        if (phoneHome.value != '' || phoneBusiness != '')
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }   
    }
</script>

这是我的自定义验证标记:

<asp:CustomValidator ID="CustomValidator1" runat="server" 
                ClientValidationFunction="ValidatePhoneNumbers" CssClass="ErrorMessage" 
                Display="Dynamic" ErrorMessage="Enter Your home or business phone number" 
                onservervalidate="CustomValidator1_ServerValidate">*</asp:CustomValidator>

最后这是我的两个文本框:

<asp:TextBox ID="PhoneHome" runat="server"></asp:TextBox>

<asp:TextBox ID="PhoneBusiness" runat="server"></asp:TextBox>

【问题讨论】:

  • 您的项目中是否包含jquery.validate.unobtrusive.js 文件?这是通常在 .net 中处理客户端验证的库。请参阅此 post 关于在 Web 表单项目中使用它

标签: javascript c# asp.net validation


【解决方案1】:

您的 Javascript 函数中存在一个小错误,导致验证始终成功:

if (phoneHome.value != '' || phoneBusiness != '')

应替换为:

if (phoneHome.value != '' || phoneBusiness.value != '')

【讨论】:

  • 非常感谢,令人难以置信的令人沮丧的是,这是错误所在,但无论如何,感谢您向我指出这一点
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多