在延迟之后使用jQuery将字段聚焦在悬停上

时间:2017-08-22 06:07:19

标签: javascript jquery

我试图在徘徊时使场地聚焦,但仅在3秒延迟之后。显然,我做错了:



var timer;

function focusTimer() {
    timer = setTimeout(function () {
        $('#input').focus(),
        3000;
    })
}

$('#input').hover(function () {
    if (timer) {
        clearTimeout(timer);
    }
  
    focusTimer();
});

#input:focus {
    width: 500px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="input">
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:4)

你做错了。

您将3000置于功能内。把它移到外面

timer = setTimeout(function () {
        $('#input').focus(),
        3000;
       ^^^^^^^
    })

应该是

timer = setTimeout(function () {
        $('#input').focus();
    },3000);

片段

&#13;
&#13;
var timer;

function focusTimer() {
    timer = setTimeout(function () {
        $('#input').focus();
        
    },3000)
}

$('#input').hover(function () {
    if (timer) {
        clearTimeout(timer);
    }
  
    focusTimer();
});
&#13;
#input:focus {
    width: 500px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="input">
&#13;
&#13;
&#13;

答案 1 :(得分:2)

使用转换延迟

#input {
  -webkit-transition-delay: 5s;
  transition:width 5s;
  transition-delay:5s;
  width:100px;
}

#input:focus {
  width:200px;
}

将鼠标悬停在输入上:

#input:hover {
 width:200px;
}

答案 2 :(得分:2)

var timer;

function focusTimer() {
    timer = setTimeout(function () { //change your setTimeout like this
        $('#input').focus();
       
    },3000);

 
}

$('#input').hover(function () {
    if (timer) {
        clearTimeout(timer);
    }
  
    focusTimer();
});
#input:focus {
    width: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="input">

答案 3 :(得分:1)

$("#i").hover(function() {
  setTimeout(function() {
    $("#i").focus();
  }, 1000);
})

   
#i {
  width:300px;
  transition:width 1s;

#i:focus {
    width: 500px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="i">