ASP.NET客户端页面验证失败后,我可以运行一些自定义脚本吗?

Doo*_*ake 12 javascript asp.net

我正在尝试运行一些客户端脚本,当且仅当客户端页面验证失败时,并且无法确定我可以将其挂钩的位置.

如果我将我的JavaScript函数绑定到提交表单的按钮的OnClientClick,它将在客户端验证之前运行.如果我将它绑定到表单的OnSubmit,那只有在验证通过时才会触发.

关于如何或在哪里勾选这样的东西的任何想法?或者,如果您有其他建议,我会向他们开放.

<form id="frm" runat="server" 
     onsubmit="FUNCTION HERE WONT FIRE IF VALIDATION FAILS">
<asp:requiredfieldvalidator id="vld" runat="server" controltovalidate="txt"/>
<asp:textbox id="txt" runat="server"></asp:textbox>

<asp:button id="cmd" runat="server" OnClick="dosomething"
     OnClientClick="FUNCTION FIRES BEFORE VALIDATION OCCURS">

</form>
Run Code Online (Sandbox Code Playgroud)

Yur*_*kiy 16

在页面末尾的标记文件中添加以下脚本:

var originalValidationFunction = Page_ClientValidate;
if (originalValidationFunction && typeof (originalValidationFunction) == "function") {
    Page_ClientValidate = function (validationGroup) {
        originalValidationFunction(validationGroup);

        if (!Page_IsValid) {
            // your code here
            alert("oops!");
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

  • 我比接受的答案更喜欢这个因为它不会迫使我自己控制验证,只能在之后搭载. (4认同)

Jam*_*son 12

尝试使用Page_ClientValidate("")从JavaScript触发验证,然后您可以运行一些自定义代码:

validate = function(){
    var isValid = Page_ClientValidate(""); //parameter is the validation group - thanks @Jeff
    if (isValid){
        isValid = somethingToCheck();
    }
    return isValid;
}

<asp:Button ID="Button1" runat="server" CausesValidation="false" OnClientClick="return validate();" ... />
Run Code Online (Sandbox Code Playgroud)