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

时间:2011-10-07 19:58:37

标签: 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>

3 个答案:

答案 0 :(得分:16)

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

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

        if (!Page_IsValid) {
            // your code here
            alert("oops!");
        }
    };
}

答案 1 :(得分:11)

尝试使用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();" ... />

答案 2 :(得分:2)

所以你有两个选择如何处理它:

  1. 使用提供CustomValidator功能的ClientValidationFunction验证程序,在您的自定义验证功能中,显然您知道验证是否失败。它通过接受在验证时使用的JavaScript函数,为您提供客户端验证所需的灵活性。

  2. 通过从JavaScript(+ jQuery)访问验证者的isValid属性,通过JavaScript访问验证验证器:

  3.  var anonymousValidator = $("#<%= vldCommentText.ClientID %>")[0];
     ValidatorEnable(anonymousValidator, true);
     if (!anonymousValidator.isvalid) 
     {
         // ...
     }