leo*_*ora 8 javascript asp.net-mvc jquery jquery-ui-dialog asp.net-mvc-4
我正在使用jquery ui对话框,其中一个按钮导致ajax调用需要几秒钟,所以我想在我点击它之后禁用按钮,直到ajax调用返回(然后我将启用它).
从谷歌搜索,我看到其他几个问这个问题,但答案似乎非常过时和hacky(基于非常旧版本的jquery ui).所以我希望现在有更优雅的方式来做到这一点
如何在jquery ui对话框上以编程方式禁用或启用按钮?
用这个:
$("#dialog-message").dialog({
modal: true,
draggable: false,
resizable: false,
position: ['center', 'top'],
show: 'blind',
hide: 'blind',
width: 400,
dialogClass: 'ui-dialog-osx',
buttons: {
"I've read and understand this": function() {
$(this).dialog("close");
}
},
open: function( event, ui ) {
//disabling button after 3 seconds
//for all buttons
setTimeout("$('.ui-button').attr('disabled', 'disabled')", 3000);
//for first button
setTimeout("$('.ui-button').first().attr('disabled', 'disabled')", 3000);
}
});
Run Code Online (Sandbox Code Playgroud)
查看演示:http://jsfiddle.net/renishar/db5SX/373/
在此按钮以3秒后以编程方式禁用.
我想这就是你要找的东西:
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":
}
Run Code Online (Sandbox Code Playgroud)
您应该能够从事件参数到按钮的回调函数获取按钮并禁用它.然后,将该按钮保存在变量中,并在回调到ajax请求时重新启用.
例如,使用HTML:
<div id="dialog">
<div id="message">
Some text
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作:
var n = 0;
$("#dialog").dialog({
modal: true,
buttons: {
"Close": function() {
$(this).dialog("close");
},
'Slow': function(e){
n++;
$('#message').html('Fetching...' + n + '...');
var button_clicked = $(e.currentTarget);
button_clicked.prop('disabled', true);
$.ajax({
url: '/echo/html/',
type: 'POST',
dataType: 'html',
data: {
html: 'Updated text',
delay: 3
},
success: function(data){
$('#message').html(data);
button_clicked.prop('disabled', false);
}
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
当ajax请求正在运行时,单击的按钮被禁用,并且当它回答时再次启用(您应该真正添加错误处理程序以及colurse).我添加了计数器来说明它 - 在按钮被禁用时单击它什么也没做.
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |