0

我有一个 ASP.NET Web 窗体应用程序。

我有一个Form不同的TextBox,现在我有几个asp:RequiredFieldValidator链接到它们属于同一个ValidationGroup

现在我必须申请一些TextBox带有相关错误消息的附加验证。具体来说,我要检查里面的文字是否TextBox是a Guid。此外,此检查必须即时完成,这意味着只要用户将光标从TextBox验证中移动,就必须执行验证,而无需按下提交。

  1. 如何IsGuid(string guid)从 Javascript 调用函数?

  2. 如何附加两个不同的错误消息作为验证(例如,如果TextBox.Text不允许使用字符并且长度 < N,我想显示一条消息)

  3. 使用jQuery还是使用ASP.NET 验证器更容易实现此验证?

如果其他人对其实施有任何其他想法,请随时提出。谢谢!

4

2 回答 2

1

您可以使用RequalExpressionValidator控件。

是一个正则表达式

^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$
于 2012-04-25T13:18:35.313 回答
0

您可以根据需要将任意数量的验证器应用于同一控件,在本例中为您的 TextBox。

在这种情况下,自定义验证器是可行的方法,因为它使您能够使用您开发的任何功能进行验证以满足您的需求。请看一下这个简单的教程

更新 1:服务器端验证

这是它在 CustomValidator 的声明中调用服务器端函数的方式:

<asp:CustomValidator runat="server" id="custPrimeCheck"
    ControlToValidate="txtPrimeNumber"
    OnServerValidate="PrimeNumberCheck"
    ErrorMessage="Invalid Prime Number" />

“PrimeNumberCheck”VB 函数示例:

Sub PrimeNumberCheck(sender as Object, args as ServerValidateEventArgs)
Dim iPrime as Integer = Cint(args.Value), iLoop as Integer, _
    iSqrt as Integer = CInt(Math.Sqrt(iPrime))

For iLoop = 2 to iSqrt
  If iPrime mod iLoop = 0 then
    args.IsValid = False
    Exit Sub
  End If
Next

args.IsValid = True
End Sub

更新 2:客户端验证

这是它在 CustomValidator 的声明中调用服务器端函数的方式:

<asp:CustomValidator runat="server" id="custPrimeCheck"
    ControlToValidate="txtPrimeNumber"
    ClientValidationFunction="CheckPrime"
    ErrorMessage="Invalid Prime Number" />

“CheckPrime”JavaScript 函数的示例:

function CheckPrime(sender, args)
{
    var iPrime = parseInt(args.Value);
    var iSqrt = parseInt(Math.sqrt(iPrime));

    for (var iLoop=2; iLoop<=iSqrt; iLoop++)
      if (iPrime % iLoop == 0) 
      {
          args.IsValid = false;
         return;
      }

    args.IsValid = true;
}

感谢@AdrianIftode 让我意识到这一点。

于 2012-04-25T13:21:31.657 回答