JavaScript のクリックイベントがASPのバリデーションとぶつかる
ASP.NET にて二重送信の対応をしているのですが、バリデーションとJSのクリックイベントがぶつかってしまい、イベントハンドラまでたどり着けません・・・。
aspx
<asp:ImageButton ID="imgUpdate" runat="server" CausesValidation="false"
OnClientClick="return isValid();
"ImageUrl="~/Images/Update32x32.png"
Text="Update" ToolTip="Update" OnClick="imgUpdate_Click" />
JavaScript
<script type="text/javascript">
function isValid() {
$('form').submit(function() {
Page_ClientValidate();
if (!Page_IsValid) return false;
// 二重送信防止
$(this).submit(function () {
return false;
});
});
}
</script>
一度クライアントでバリデーションエラーが出ている状態でsubmitし、その後エラーを修正して再度submitを押下したところ、二重送信と判断されてしまいます。
(CausesValidation="false" にすればバリデーションの順番を調整できる、と認識していたのですが、その後の二重送信防止の処理で return false になっているようです。)
デバッグしたところ、$(this).submit(function (){
に何度もアクセスされてしまうのですが、条件分岐に何か間違いがあるのでしょうか。