表格字段更改的延迟功能

时间:2014-05-05 18:03:09

标签: javascript jquery

我在这里遇到了一段相对简单的代码问题。我使用removeAttr点击复选框后尝试延迟change() 5秒钟。

我可以让removeAttr立即在更改时工作,或setTimeout在页面加载时工作,但不能将两者结合使用。

<input type="checkbox" id="human"> I am a human
<input type="file" disabled name="file" id="file" />  

$('document').ready(function(){

    $('#human').change(

    setTimeout(function(){
    $('#file').removeAttr("disabled");
    }, 5000));

    });

Here is a complimentary JSFiddle of my issue

谢谢你们。

3 个答案:

答案 0 :(得分:3)

你的javascript似乎不对。为此,您应该适当地处理更改功能

$(document).ready(function(){
    $('#human').change(function() {
       setTimeout(function() {
            $('#file').removeAttr("disabled");
        }, 5000);
    })
});

FIDDLE

答案 1 :(得分:1)

您可以通过将相关代码放入队列来使用delay()

{文档是一个对象,而不是元素类型}

$(document).ready(function () {
    $('#human').one('change', function () {
        $('#file').delay(5000).queue(function(){
            $(this).prop('disabled', false);
        });
    });
});

DEMO

答案 2 :(得分:0)

也许我误解了你,但你打电话给setTimeout而不是把它当作处理程序。你可以,例如将代码放在单独的函数处理程序中,并将此函数设置为事件处理程序:

var myFunc = function () {
   setTimeout(function(){
       $('#file').removeAttr("disabled");
   }, 1000);
};

$('document').ready(function(){
    $('#human').change(myFunc);
});

Fiddle