asp:RegularExpressionValidator 后提交表单检查表单是不是有效?

Posted

技术标签:

【中文标题】asp:RegularExpressionValidator 后提交表单检查表单是不是有效?【英文标题】:Submit form after asp:RegularExpressionValidator check form valid?asp:RegularExpressionValidator 后提交表单检查表单是否有效? 【发布时间】:2016-12-08 23:50:09 【问题描述】:

我有一个带有这个标记的表单:

<asp:TextBox ID="txtMeMail" runat="server" Width="250px" ToolTip="error"></asp:TextBox>
<asp:RegularExpressionValidator CssClass="mandatory msg" ID="RegularExpressionValidator1" runat="server" Display="Dynamic" ValidationGroup="validEmail" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtMeMail" ErrorMessage="error" EnableClientScript="true" />
<button class="button noMarginLeft" runat="server" validationgroup="validEmail" accesskey="S" id="btnSave" onserverclick="BtnSave_Click" value="Page.FIUserEdit.SaveButton.Label">
    <asp:Label runat="server" Text="label"></asp:Label>
</button>

当我输入“abc”并从文本框中删除焦点时,会显示无效的电子邮件。之后,我用有效的电子邮件更正了文本框,并将焦点放在文本框上,然后单击提交按钮。验证消息消失,但表单未提交。

有什么方法可以验证然后提交表单吗?

【问题讨论】:

【参考方案1】:

尝试使用

<asp:Button class="button noMarginLeft" runat="server" ValidationGroup="validEmail" accesskey="S" ID="btnSave" OnServerClick="BtnSave_Click" value="Page.FIUserEdit.SaveButton.Label" />

问题是你使用的是普通的html Button 标签。虽然它可以工作,但不推荐,因为你失去了功能,请参阅How can I use the button tag with ASP.NET?

如果您确实想要按钮内的内容,请使用 LinkBut​​ton。

【讨论】:

如果您将OnServerClick 替换为OnClick,它将起作用。 :-) 如果我尝试该按钮即使在电子邮件无效时仍会回发。 仍然无法正常工作,我调试了 javascript,发现在文本框的更改事件上返回 true,并且未调用提交。 认为我发现根本原因是当验证消息出现时,它使提交按钮移动,而我的点击没有在按钮上。

以上是关于asp:RegularExpressionValidator 后提交表单检查表单是不是有效?的主要内容,如果未能解决你的问题,请参考以下文章