2013-01-09 27 views
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);    
}); 

我有使AJAX表单提交不列入劳动的问题。只有禁用按钮的作品。

我想一起执行它们或者如果有另一种方式我想要使用它们。

请建议。

感谢

+0

我认为你在'temporaryDisableButton()'函数 –

+0

返回false返回false。 我什么都没有回来。 只需将按钮的属性设置为禁用。并使用settimeout来再次启用它使用jQuery。 – user1960365

回答

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

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