在我正在开发的应用程序中,我使用ASP.NET Web窗体提供的验证控件和我正在使用的窗体的某些部分JavaScript的。ASP.NET WebForms - 同时执行JavaScript验证和验证控制
验证的两个方面都应该如此,但是,当我单击Submit按钮时,ASP.NET验证首先出现,然后执行我在JavaScript中进行的自定义验证。因此,当表单不完整并提交时,只会显示ASP.NET验证错误,并且在更正这些错误并提交表单时,会显示我的验证错误。
我想要的是当用户点击提交按钮时,ASP.NET验证和我的JavaScript验证同时发生,以便用户可以同时查看所有错误。
<form id="StudentLSFApplication" runat="server" onsubmit="return validateForm()">
<!--other html code-->
<asp:Button ID="SaveLSFApplication" runat="server" Text="Save Application" OnClick="saveApplication"
ValidationGroup="AllValidation" />
</form>
<script>
function validateForm() {
//my validation
}
</script>
正如你可以从我的示例代码中看到的,我有JavaScript函数validateForm()
被称为在onsubmit
事件,Button
控制是AllValidation
验证组的一部分。此刻,表单提交AllValidation
首先发生,如果没有问题,则发生validateForm()
。
建议使用Microsoft提供的其他验证器,或者为了更加复杂,每种验证/控制都使用一个“CustomValidator”。 ASP.NET验证器非常棒,因为它们使用JavaScript **和C#验证(代码隐藏)**。 JavaScript可以被绕过,所以你应该在'CustomValidator'的事件后添加一个代码,并且不仅在JavaScript上编程验证,甚至在C#上编写验证。 “CustomValidator”应该只指向一个控件,但它可以与其他验证器共享相同的函数。应该设置“ControlToValidate”。 – modiX
上面的例子是针对表单中的单个控件,而不是一个函数中的完整验证。稍微编一些答案,使其更加清晰。但是如果你想对多个控件进行更复杂的客户端验证,比如'如果选中CheckBox1然后TextBox1必须包含数据',那么你可以省略ControlToValidate来确保CustomValidator激发。而且仍然总是在代码背后进行验证,如modiX所示。 – VDWWD
太棒了,这工作,谢谢! – RoyalSwish