【问题标题】:Check result of ASP.Net validator clientside检查 ASP.Net 验证器客户端的结果
【发布时间】:2011-05-31 14:40:07
【问题描述】:

我知道内置的 ASP.Net 验证器带有一个客户端框架,但是我一直找不到任何东西可以让我检查单个验证器的有效状态。

我希望它是可能的,所以我希望这里有人知道怎么做:-)

有问题的验证器是 RegularExpressionValidator,我用它来确定电子邮件地址是否有效。

这里有一些简短的代码:

<script>
function CheckForExistingEmail()
{
  Page_ClientValidate(); // Ensure client validation
  if (revEmail.IsValid) // pseudo code!
  {
    // Perform server side lookup in DB for whether the e-mail exists.
  }
}
</script>

<asp:TextBox runat="server" id="tbEmail" onblur="CheckForExistingEmail();" />
<asp:RegularExpressionValidator id="revEmail" runat="server" ControlToValidate="tbEmail" ErrorMessage="Not a valid e-mail address" ValidationExpression="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})" />

【问题讨论】:

  • 如果您采用正则表达式验证器的 clientId 并像您一样检查 IsValid,您的代码应该可以正常工作。
  • 我不确定我是否关注你,我已经尝试过:.IsValid 和 document.getElementById('')。已验证。两者都是未定义的:-(

标签: javascript asp.net validation


【解决方案1】:

我现在自己找到了解决方法:

通过向验证器添加 ValidationGroup,我可以使用 Page_ClientValidate(validationgroup) - 它返回一个布尔值。

我不确定这是否与您所说的 Pabuc 相同,如果是,请放弃答案,我显然会选择正确的答案 :-)

这是有效的代码:

<script>
function CheckForExistingEmail()
{
  if(Page_ClientValidate("email"))
  {
    // Perform server side lookup in DB for whether the e-mail exists.
  }
}
</script>

<asp:TextBox runat="server" id="tbEmail" onblur="CheckForExistingEmail();" />
<asp:RegularExpressionValidator id="revEmail" runat="server" ValidationGroup="email" ControlToValidate="tbEmail" ErrorMessage="Not a valid e-mail address" ValidationExpression="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})" />

【讨论】:

  • 我怀疑您是否可以像在原始问题中那样访问 isValid 属性。如果页面上有单个验证器,则不需要验证组,您可以这样做 -- if(Page_ClientValidate()) { // 在数据库中执行服务器端查找电子邮件是否存在。 }
  • @gbs:关于单个验证器的情况,您是对的 - 但是我在页面上确实有多个验证器,我只是针对问题对其进行了简化 :-)
【解决方案2】:

您可以查看Validator消息的可见性(我们通常有一个红色的星号*)

if (document.getElementById("ctl00_ContentPlaceHolder1_revClientSite").style.visibility == "hidden") {
  // validator says go ahead
} else {
  alert("please fix the indicated field - it is not valid");
}

.style.visibility 将被“隐藏”或“可见”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2012-05-05
    • 2015-11-08
    • 2010-09-14
    • 2017-01-11
    相关资源
    最近更新 更多