我在这里遇到了一段相对简单的代码问题。我使用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
谢谢你们。
答案 0 :(得分:3)
你的javascript似乎不对。为此,您应该适当地处理更改功能
$(document).ready(function(){
$('#human').change(function() {
setTimeout(function() {
$('#file').removeAttr("disabled");
}, 5000);
})
});
答案 1 :(得分:1)
您可以通过将相关代码放入队列来使用delay()
:
{文档是一个对象,而不是元素类型}
$(document).ready(function () {
$('#human').one('change', function () {
$('#file').delay(5000).queue(function(){
$(this).prop('disabled', false);
});
});
});
答案 2 :(得分:0)
也许我误解了你,但你打电话给setTimeout
而不是把它当作处理程序。你可以,例如将代码放在单独的函数处理程序中,并将此函数设置为事件处理程序:
var myFunc = function () {
setTimeout(function(){
$('#file').removeAttr("disabled");
}, 1000);
};
$('document').ready(function(){
$('#human').change(myFunc);
});