我有一个包含许多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或其他框架。只需javascript
或asp.net
个功能。
答案 0 :(得分:0)
您可以使用单个逻辑块,其中应检查两个字段。下面的示例代码
if(!/^[a-zA-Z]+$/.test($("#Name")) || !/^[a-zA-Z]+$/.test($("#Surname"))) {
console.log("Text is invalid");
}
答案 1 :(得分:0)
ASP.Net以CustomValidator
控件的形式为这些情况提供解决方案。
CustomValidator 控件允许您使用自定义验证逻辑创建验证控件。
您应该[始终]指定服务器端逻辑,以及[可选]客户端逻辑。
<强> 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]+$");
}