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 回答