ASP.NET - 我能在javascript中处理“ASP.NET客户端验证已成功”事件吗?

4
我有一个产品页面,上面有一个加入购物车的按钮。
当单击“加入购物车”按钮时,会使用ASP.NET验证控件(使用客户端验证来防止无效输入导致的后台提交)验证一些输入字段。
为了防止多次点击添加多个商品到购物车,我想在初始单击后禁用“加入购物车”按钮,但仅在验证成功时禁用。(如果他们搞砸了一个输入的话,禁用“加入购物车”将是相当糟糕的)
是否可能在JavaScript中处理“ASP.NET客户端验证成功”事件?
我可能最终会为此页面自己设计验证机制。

我不会将此作为答案发布,因为它并没有直接回答你的问题...但如果验证失败,为什么不禁用控件,然后重新启用它呢? - Kiley Naro
这让我更加困惑了--那么我该如何处理验证失败呢?我喜欢这个想法,只是不知道如何实现。 - Brian Webster
2个回答

2
只是一个例子,但你可以根据自己的需求进行调整:
标记:
<asp:button id="bla" runat="server" Text="bla" onClientClick="ValidationCatcher()" />

脚本:

function ValidationCatcher()
{
    //force .net validation
    Page_ClientValidate();

    for(i=0; i < Page_Validators.length; i++)
    {
        if(!Page_Validators[i].isvalid)
        {
            //do whatever you need to do
        }
    }     
}

1

在Rick Schott的答案基础上,隐藏按钮一旦验证成功,并且如果用户按下Escape键,则重新显示按钮:

<asp:Button ID="btnProcess" runat="server" Text="Donate" OnClick="BtnProcessClick" ValidationGroup="donate" ClientIDMode="Static" onClientClick="HideBtnProcess()">

<div id="pWait" >Please wait...</div>

<script type="text/javascript">
$(document).ready(function() {
    $("#pWait").hide();
});

function HideBtnProcess() {
    if (Page_ClientValidate("donate")) {
        $("#btnProcess").hide();
        $("#pWait").show();
        $(document).keyup(function (event) {
            if (event.which === 27) {
                $("#btnProcess").show();
                $("#pWait").hide();
            }
        });
    }
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接