asp.net

时间:2016-06-02 09:51:53

标签: javascript asp.net

我有一个包含许多text字段的表单。其中name有一个字段,surname有另一个字段。检查它们的有效字符(仅允许字母)。但是,如果两个字段都包含无效数据,我只想显示一个警告。

以下是代码:

<asp:TextBox ID="Name" placeholder="Name" runat="server"></asp:TextBox>
<asp:TextBox ID="Surname" placeholder="Surname" runat="server"></asp:TextBox><br /><br />

<asp:RegularExpressionValidator Display="Dynamic"  ID="RegularExpressionValidator1" runat="server" ControlToValidate="Name" ValidationExpression="[a-zA-Z]+$" Text="Invalid name!" /> 
<asp:RegularExpressionValidator Display="Dynamic"  ID="RegularExpressionValidator6" runat="server" ControlToValidate="Surname" ValidationExpression="[a-zA-Z]+$"  Text="Invalid name!" /> 

如果我输入Amy Adams的名字,它不应该显示警告。 如果我输入Amy Ada3s,应该说'Invalid name!'。 同样,如果我进入A3y亚当斯。 现在如果我输入A3y Ada3s,警告信息应该只显示一次。

如果可能,不使用jquery或其他框架。只需javascriptasp.net个功能。

2 个答案:

答案 0 :(得分:0)

您可以使用单个逻辑块,其中应检查两个字段。下面的示例代码

if(!/^[a-zA-Z]+$/.test($("#Name")) || !/^[a-zA-Z]+$/.test($("#Surname"))) {
   console.log("Text is invalid");
}

答案 1 :(得分:0)

ASP.Net以CustomValidator控件的形式为这些情况提供解决方案。

  

CustomValidator 控件允许您使用自定义验证逻辑创建验证控件。

您应该[始终]指定服务器端逻辑,以及[可选]客户端逻辑。

了解详情:CustomValidator Control

<强> HTML

<asp:TextBox ID="Name" placeholder="Name" runat="server"></asp:TextBox>
<asp:TextBox ID="Surname" placeholder="Surname" runat="server"></asp:TextBox><br />
<br />
<asp:CustomValidator ID="BothNamesValidator" runat="server" Text="Invalid Name!" Display="Dynamic"
    ClientValidationFunction="BothNames_ClientValidate" 
    OnServerValidate="BothNames_ServerValidate" 
    />

<强>的JavaScript

function BothNames_ClientValidate(source, args) {
    var name = document.getElementById('<%= Name.ClientID %>').value;
    var surname = document.getElementById('<%= Surname.ClientID %>').value;
    args.IsValid = (/[a-zA-Z]+$/.test(name) && /[a-zA-Z]+$/.test(surname));
}

<强> C#

protected void BothNames_ServerValidate(object source, ServerValidateEventArgs args)
{
    var name = Name.Text;
    var surname = Surname.Text;
    args.IsValid = Regex.IsMatch(name, "[a-zA-Z]+$") && Regex.IsMatch(surname, "[a-zA-Z]+$");
}