我想要当我单击textBox时textBox会延迟聚焦。 现在,当我使用setTimeOut在onFocus()属性中设置一个函数时,它将首先聚焦,然后运行其余代码,这不是我想要的。 我想延迟关注,而我的代码不起作用!
<input type="tel" id="PhoneInput" placeholder="phone number" onFocus="focusDelay()"/>
此功能首先关注textBox,然后运行setTimeout
function focusDelay()
{
setTimeout(function(){
$('#PhoneInput').focus();
},4000);
}
答案 0 :(得分:0)
收到事件后,它已经 集中了元素。您需要取消聚焦(模糊),然后再聚焦。当您将其重点放在目标上时,您需要一个标志来告诉您的代码可以允许发生焦点。像这样(我减少了延迟):
var focussing = 0;
function focusDelay()
{
if (!focussing) {
var $input = $('#PhoneInput');
$input.blur();
setTimeout(function(){
++focussing;
$input.focus();
--focussing;
}, 1000);
}
}
<input type="tel" id="PhoneInput" placeholder="phone number" onFocus="focusDelay()"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
在这种情况下,我倾向于使用计数器标志而不是布尔标志,尽管在这种特殊情况下,布尔可能会起作用。