0

prevent a button from submitting twiceダブルクリックして次のスクリプトを実行します。正常に動作します。

しかし、を追加するとシナリオが不器用になりRequired Field validatorます。テキストボックスに空白の値を入力して送信しようとすると、バリデーターが起動します。しかし、テキストボックスに値を入力してもう一度送信しようとすると、ポストバックは実行されません。

理由を理解しました。最初のボタンクリック自体で、検証エラーに関係なく、変数isActionInProgressが「はい」に設定されます。

この課題を克服するための最良の方法は何ですか?

マークアップ

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.1.js"></script>
<script type="text/javascript">

    $(document).ready(function () {



        var isActionInProgress = 'No';

        $('.myButton').click(function (e) {

            if (isActionInProgress == 'No') {
                isActionInProgress = 'Yes';
            }
            else {
                e.preventDefault();
                //alert('STOP');
            }

        });


    });

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txtEmpName" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" CssClass="myButton" runat="server" Text="Submit" ValidationGroup="ButtonClick"
        OnClick="Button1_Click" />

    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtEmpName"
        runat="server" ErrorMessage="RequiredFieldValidator" ValidationGroup="ButtonClick" Text="*"></asp:RequiredFieldValidator>
</div>
</form>
</body>

参考文献

  1. Page_ClientValidateは複数回検証しています。
  2. ASP.NetValidationSummaryで冗長なエラーメッセージを非表示にする
  3. MSDN-詳細なASP.NET検証
4

1 に答える 1

2

私はこのようなsomthinだと思います:

 $('.myButton').click(function (e) {
        if(Page_IsValid){
        if (isActionInProgress == 'No') {
            isActionInProgress = 'Yes';
        }
        else {
            e.preventDefault();
            //alert('STOP');
        }
      }

    });
于 2012-12-11T17:44:31.453 に答える