我正在使用
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": }