在超时功能完成之前阻止按钮单击

时间:2015-10-07 13:24:54

标签: javascript jquery

我有一个应用程序需要几秒钟才能获得一些数据,然后将其放在屏幕上。我还有一个后退按钮,允许用户基本上返回到前一个屏幕。我希望在超时功能工作时禁用此按钮。我该怎么做呢?就像我现在一样,即使在收集信息时,按钮仍然有效。这就是我所拥有的。

JS

$("#areas").on("change", function(){
    setTimeout(function(){
        $("#back").on("click", function(event){
        $(this).disabled = true;
    }, 3000)
})

3 个答案:

答案 0 :(得分:0)

你需要在setTimeout内部进行onclick,你也应该给setTimeout函数延迟。只需禁用按钮,直到超时工作!

尝试以下

class Foo(Process):

    def __init__(self):
        super(Foo, self).__init__()
        self.daemon = True # is daemon
        self.number = 1
        self._target = self.loop # on start() it will run loop()

    def loop(self):
        while 1:
            print self.number
            self.number += 1
            time.sleep(1)


if __name__ == '__main__':

    f = Foo() # is now Process

    f.start() # runs f.loop()
    while 1:
        time.sleep(1)
        print f.number * 10

答案 1 :(得分:0)

$("#areas").on("change", function(){ setTimeout(function(){ $("#back").attr('disabled','disabled'); },2000) }) 按钮被禁用,并在10秒后启用。

#back

答案 2 :(得分:0)

以下是否响铃?

$("#back").prop("disabled", true);
$.ajax({
    ...
    success: function(){

        // ..Gathere the information

        $("#back").prop("disabled", false);
    }
});

我还建议你硬编码禁用="禁用"在HTML本身,所以你不需要在上面的代码第一行。

<input type="button" disabled="disabled" value="BACK" id="back">

[编辑]

我发现你不使用ajax方法。但我认为你确实知道数据处理的开始和结束位置,所以只需要调用prop方法。

$("#area").append(newContent); // wild guess you final code
$("#back").prop("disabled", false);

如果你没有选择添加该行,还有另一种我以前没有尝试过的解决方案。

$('#area').on("DOMSubtreeModified",function(){
    // Some condition indecates the process has done
    if ( ... ) {
        $("#back").prop("disabled", false);
    }
});

注意:确认支持的DOMSubtreeModified浏览器