我有一个ASP.NET Web窗体应用程序。
我有Form
个TextBox
,现在我有几个asp:RequiredFieldValidator
链接到属于同一个ValidationGroup
。
现在我必须向某些TextBox
申请额外的验证以及相关的错误消息。
具体来说,我要检查TextBox
内的文字是否为Guid
。 Morevoer此检查必须即时完成,这意味着只要用户从TextBox
移动光标,就必须执行验证,而无需按提交。
如何从Javascript调用IsGuid(string guid)
函数?
如何将两个不同的错误消息作为验证附加(例如,如果TextBox.Text
不允许使用carachters并且长度
使用 jQuery 或使用 ASP.NET验证程序实现此验证是否更容易?
如果其他人对其实施有任何其他想法,请随时提出建议。谢谢!
答案 0 :(得分:1)
您可以使用ReqularExpressionValidator控件。
Here正则表达式
^(\{){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}$
答案 1 :(得分:0)
您可以根据需要对同一个控件应用尽可能多的验证器,在本例中为TextBox。
在这种情况下,可以使用自定义验证器,因为它使您可以使用您开发的任何功能进行验证以满足您的需求。请看一下这个简单的tutorial。
更新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让我意识到这一点。