我正在使用
jquery ui dialog,其中一个按钮导致ajax调用需要几秒钟,因此我想在我点击它之后禁用该按钮,直到ajax调用返回(然后我将启用它).
从谷歌搜索,我看到其他几个问这个问题,但答案似乎非常过时和hacky(基于非常旧版本的jquery ui).所以我希望现在有更优雅的方式来做到这一点
如何在jquery ui对话框上以编程方式禁用或启用按钮?
解决方法
我想这就是你要找的东西:
>按下的按钮将被禁用
>延迟的承诺将一直等到ajax()调用完成
>然后延迟操作将重新启用按钮
::
buttons: {
"DoAjax": function( e ) {
//disabling button clicked
var btnAjax = $(".ui-dialog-buttonpane button:contains('DoAjax')");
btnAjax.disable(true);
$.when( $.ajax( "/api/controller/action" ) )
.then(function( data,textStatus,jqXHR ) {
// re-enable pressed button
btnAjax.disable(false);
})
}),"Close":
}