完成后无法禁用引导按钮

时间:2012-10-17 20:14:19

标签: javascript twitter-bootstrap

这很简单:在元素el上调用bootstrap按钮('complete')后,

el.attr('disabled', 'disabled');​ 

el.addClass('disabled');​ 

无效

这是jsfiddle http://jsfiddle.net/D2RLR/2732/

这就是我所期望的(jsfiddle使用'loading'):http://jsfiddle.net/xgKZd/

3 个答案:

答案 0 :(得分:5)

这似乎只是一个时间问题:如果您在设置disabled类和属性之前“等待”,它就会起作用:Demo (jsfiddle)

该插件使用超时0(检查源以获取更多信息)但似乎“花费”更多时间。只需添加一些延迟或自己做按钮效果,这样就可以控制动作的顺序。

setTimeout(function() { $('#bton').button('complete'); }, 2000);

setTimeout(function() { $('#bton').attr('disabled', 'disabled').addClass('disabled'); }, 4000);

答案 1 :(得分:5)

我遇到了同样的问题,想要分享另一种解决方案。您可以更改加载文本数据atrribute值。所以如果你有一个按钮:

<button id='myButton' data-loading-text="Loading..." type="submit">Save</button>

您最初做某事并希望显示“正在加载...”消息

$('#myButton').button('loading');

然后,当你完成所有工作后,你可以这样做:

$('#myButton').data('loading-text','Done!').button('loading');

答案 2 :(得分:0)

@Sherbrow是对的,但你不需要等待2秒才能禁用按钮。因为.button的setState方法使用setTimeout(checkout source code)来处理类,所以你只需做类似的事情,例如:

var $btn = $('#btn');
$btn.button('complete');
setTimeout(function(){ 
    $btn.attr('disabled', 'disabled').addClass('disabled'); 
}, 0);