jquery在特定时间禁用按钮

时间:2010-09-06 07:56:15

标签: asp.net jquery

我想在特定时间禁用按钮。我怎么能这样做?

4 个答案:

答案 0 :(得分:10)

由于这可能是您可能想重复的任务,我认为最好的方法是像这样扩展jQuery:

$.fn.timedDisable = function(time) {
    if (time == null) { time = 5000; }
    return $(this).each(function() {
        $(this).attr('disabled', 'disabled');
        var disabledElem = $(this);
        setTimeout(function() {
            disabledElem.removeAttr('disabled');
        }, time);
    });
};

这将允许您在一组匹配的元素上调用函数,这将临时禁用它们。在编写时,您只需调用该函数,所选元素将被禁用5秒。你会这样做:

$('#some-button').timedDisable();

您可以通过更改以下行中的5000来调整默认时间设置:

if (time == null) { time = 5000; }

您可以选择传递时间值(以毫秒为单位)来控制元素的禁用时间。例如:

$('#some-button').timedDisable(1000);

这是一个有效的演示:http://jsfiddle.net/fG2ES/

答案 1 :(得分:9)

禁用该按钮,然后使用setTimeout运行一个在几秒钟后启用该按钮的功能。

$('#some-button').attr("disabled", "disabled");
setTimeout('enableButton()', 5000);

function enableButton(){
   $('#some-button').removeAttr('disabled');
}

答案 2 :(得分:2)

试试这个。

(function(){
$('button').on('click',function(){
var $this=$(this);
        $this
            .attr('disabled','disabled');
             setTimeout(function() {
             $this.removeAttr('disabled');
             }, 3000);
      });
 })();

您可以在http://jsfiddle.net/informativejavascript/AMqb5/

找到一个有效的例子

答案 3 :(得分:1)

可能不是最优雅的解决方案,但我想我会在这个上玩jQuery队列......

​$.fn.disableFor = function (time) {
    var el = this, qname = 'disqueue';
    el.queue(qname, function () {
        el.attr('disabled', 'disabled');
        setTimeout( function () {
            el.dequeue(qname);
        }, time || 3000);
    })
    .queue(qname, function () {
        el.removeAttr('disabled');
    })
    .dequeue(qname);
};

$('#btn').click( function () {
    ​$(this).disableFor(2000);​​​​
});

这是我解决的问题...... http://jsfiddle.net/T9QJM/

并且,作为参考,How do I chain or queue custom functions using JQuery?