Asp.net Web 表单验证 - RegularExpressionValidator
Asp.net Webforms Validation - RegularExpressionValidator
我有一个网络表单,当我提交时,我需要验证它。这对我来说是全新的,但这就是我所拥有的。现在,当我点击提交时,即使是空白表格,它也会发布。我需要它先验证。我想我的问题可能出在 jquery 和 PreventDefault() 上。另外,如何使它与我添加的验证码一起使用?它只是在提交时也绕过了它。
客户端代码:
<form id="contactForm">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<asp:TextBox runat="server" ID="frmFirstName" CssClass="form-control"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ID="FirstNameValid" ControlToValidate="frmFirstName" Text="Please enter your first name"></asp:RegularExpressionValidator>
</div>
</div>
<div class="col-md-4 pad_lr_8">
<div class="form-group">
<asp:TextBox runat="server" ID="frmLastName" CssClass="form-control"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ID="LastNameValid" ControlToValidate="frmLastName" Text="Pleaseenter your last name"></asp:RegularExpressionValidator>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<asp:TextBox runat="server" ID="frmEmail" CssClass="form-control"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ID="EmailValid" ControlToValidate="frmEmail" Text="Please enter your email"></asp:RegularExpressionValidator>
</div>
</div>
</div>
<div class="row pad_tb_8">
<div class="col-md-12">
<div class="form-group">
<asp:TextBox runat="server" TextMode="MultiLine" Rows="10" CssClass="form-control" ID="frmMessage"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ControlToValidate="frmMessage" Text="Please enter your message"></asp:RegularExpressionValidator>
</div>
</div>
</div>
<div class="row">
<div class="col-md-7" style="padding-right: 8px;">
<recaptcha:RecaptchaControl ID="recaptcha" runat="server" Theme="white" PublicKey="" PrivateKey=""/>
</div>
<div class="col-md-5 hidden-xs hidden-sm">
<button type="submit" runat="server" OnServerClick="SendEmail" class="btn btn-orange">Send <i class="fa fa-caret-right"></i></button>
</div>
</div>
<div class="row">
<div class="col-sm-12 hidden-md hidden-lg">
<button type="submit" runat="server" OnServerClick="SendEmail" class="btn btn-orange">Send <i class="fa fa-caret-right"></i></button>
</div>
</div>
<div class="row pad_tb_8">
<div class="col-md-12">
<asp:Label runat="server" ID="lblResult"></asp:Label>
</div>
</div>
</form>
jQuery:
<script>
jQuery(document).ready(function ($) {
$("#contactForm").submit(function (e) {
e.preventDefault();
});
});
</script>
除了 RegularExpression 验证器(AFAIK 不会触发,除非您在字段中输入内容),您需要添加 RequiredFieldValidators 以确保用户在字段中输入内容。
为两个验证器设置Display="Dynamic"
。
为了确保用户不会跳过表单输入字段,您必须使用ASP.NET VALIDATION SERVER CONTROLS,即RequiredFieldValidator 控件。而不是 RegularExpressionValidator 控件,因为此控件的目的只是检查用户输入是否与正则表达式定义的模式匹配。此控件非常适合用于根据给定的正则表达式检查电子邮件地址和 phone 号码。
我有一个网络表单,当我提交时,我需要验证它。这对我来说是全新的,但这就是我所拥有的。现在,当我点击提交时,即使是空白表格,它也会发布。我需要它先验证。我想我的问题可能出在 jquery 和 PreventDefault() 上。另外,如何使它与我添加的验证码一起使用?它只是在提交时也绕过了它。
客户端代码:
<form id="contactForm">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<asp:TextBox runat="server" ID="frmFirstName" CssClass="form-control"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ID="FirstNameValid" ControlToValidate="frmFirstName" Text="Please enter your first name"></asp:RegularExpressionValidator>
</div>
</div>
<div class="col-md-4 pad_lr_8">
<div class="form-group">
<asp:TextBox runat="server" ID="frmLastName" CssClass="form-control"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ID="LastNameValid" ControlToValidate="frmLastName" Text="Pleaseenter your last name"></asp:RegularExpressionValidator>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<asp:TextBox runat="server" ID="frmEmail" CssClass="form-control"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ID="EmailValid" ControlToValidate="frmEmail" Text="Please enter your email"></asp:RegularExpressionValidator>
</div>
</div>
</div>
<div class="row pad_tb_8">
<div class="col-md-12">
<div class="form-group">
<asp:TextBox runat="server" TextMode="MultiLine" Rows="10" CssClass="form-control" ID="frmMessage"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" CssClass="error" ControlToValidate="frmMessage" Text="Please enter your message"></asp:RegularExpressionValidator>
</div>
</div>
</div>
<div class="row">
<div class="col-md-7" style="padding-right: 8px;">
<recaptcha:RecaptchaControl ID="recaptcha" runat="server" Theme="white" PublicKey="" PrivateKey=""/>
</div>
<div class="col-md-5 hidden-xs hidden-sm">
<button type="submit" runat="server" OnServerClick="SendEmail" class="btn btn-orange">Send <i class="fa fa-caret-right"></i></button>
</div>
</div>
<div class="row">
<div class="col-sm-12 hidden-md hidden-lg">
<button type="submit" runat="server" OnServerClick="SendEmail" class="btn btn-orange">Send <i class="fa fa-caret-right"></i></button>
</div>
</div>
<div class="row pad_tb_8">
<div class="col-md-12">
<asp:Label runat="server" ID="lblResult"></asp:Label>
</div>
</div>
</form>
jQuery:
<script>
jQuery(document).ready(function ($) {
$("#contactForm").submit(function (e) {
e.preventDefault();
});
});
</script>
除了 RegularExpression 验证器(AFAIK 不会触发,除非您在字段中输入内容),您需要添加 RequiredFieldValidators 以确保用户在字段中输入内容。
为两个验证器设置Display="Dynamic"
。
为了确保用户不会跳过表单输入字段,您必须使用ASP.NET VALIDATION SERVER CONTROLS,即RequiredFieldValidator 控件。而不是 RegularExpressionValidator 控件,因为此控件的目的只是检查用户输入是否与正则表达式定义的模式匹配。此控件非常适合用于根据给定的正则表达式检查电子邮件地址和 phone 号码。