当我使用绑定到提交按钮的事件处理程序时,Ajax发布不起作用

时间:2013-01-09 06:35:59

标签: jquery asp.net-mvc-3

我使用的部分视图如下: -

@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表单提交无效。只有禁用该按钮才能正常工作。

我想一起执行它们,或者如果有其他方法我想使用它。

请建议。

由于

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,如果禁用提交按钮,某些浏览器将无法提交表单。您在实际触发提交事件之前完全禁用该按钮。要解决此问题,您可以在禁用按钮之前提交表单或暂时隐藏按钮而不是禁用它。

您必须通过传递Html选项new { id = "myAjaxForm" }来为Ajax表单提供客户端ID。

@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);
});

有很多方法可以做到这一点,但基本的想法是你不想在它有机会触发事件之前禁用提交按钮。