1

私は次のような部分的なビューを使用しています:-

@using (Ajax.BeginForm("UpdateStatus", "Controller", new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divCurrent",
OnSuccess = "cleanUp",
OnFailure = "statusUpdateFailure"
}))
{
<input id="statusChange" type="submit" value="Submit" class="button" />
}

また、送信ボタンのクリックで、ワンクリック後に数秒間無効に設定されるようなハンドラーが必要なので、ユーザーはそれを再度クリックできず、次のように実行しています:-

$('#statusChange').click( function () {
    temporarilyDisableButton($this, 60000);            
});

しかし、 Chromeでは、 ajaxフォームの送信が機能しないという問題があります。ボタンを無効にするだけで機能します。

両方を一緒に実行したい、または別の方法でそれを使用したい場合。

提案してください。

ありがとう

4

1 に答える 1

0

送信ボタンが無効になっていると、一部のブラウザがフォームを送信しないという同様の問題が発生しました。送信イベントが実際にトリガーされる前に、ボタンを完全に無効にします。これを回避するには、ボタンを無効にする前にフォームを送信するか、ボタンを無効にする代わりに一時的に非表示にします。

Htmlオプションを渡して、AjaxフォームにクライアントIDを指定する必要がありますnew { id = "myAjaxForm" }

@using (Ajax.BeginForm("UpdateStatus", "Controller", new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divCurrent",
OnSuccess = "cleanUp",
OnFailure = "statusUpdateFailure"
}, new { id = "myAjaxForm" } ))

次に、クリックでこれを行うことができます

$('#statusChange').click( function () {
   $('#myAjaxForm').submit();
    temporarilyDisableButton($this, 60000);
    return false; //stop the button from performing its default action
}

submitまたは、クリックイベントを完全に削除して、イベントを関数にバインドすることもできます。

$('#myAjaxForm').submit(function(){
temporarilyDisableButton($('#statusChange'), 60000);
});

これを行う方法は無数にありますが、基本的な考え方は、イベントをトリガーする前に送信ボタンを無効にしたくないということです。

于 2013-01-09T15:09:02.467 に答える