我有一个带搜索栏的移动应用程序和这些功能:
$(".dk").hide(0);
$("#fus").click(function () {
$(".dk").fadeOut(100);
$("#sim").removeAttr("autofocus")
});
$("#ys").click(function (e) {
$("#s,#u,#n,#l,#a,#m,.dk").hide(100);
$("#re,#r").animate({"margin-left": "0px"}, 200);
$("#s,#u,#n").animate({ "margin-left": "2px"}, 200);
$("#sim").delay(300).attr({"autofocus": "autofocus"});
$(".dk").fadeIn(100);
e.stopPropagation();
});
})
<div style="padding-top:10px;" id="toolbar"> <a href="#" id="open-left"></a>
<div class="tbar">
<img style="height:30px;" src="img/cles.png" />
<div class="ha">
<img id='ys' style=" height:27px" src="img/searchico.png" />
</div>
</div>
</div>
<div class='dk'>
<form id="hif">
<input id='sim' type="search">
<img style="position:absolute;height:26px;margin-left:-270px;margin-top:20px;" src="img/searchicog.png">
</form>
</div>
我正试图淡出div .dk
(又称搜索框)。 #Ys
是搜索图标,#sim
是输入字段,#fus
是点击(或点按)以触发fadeOut功能的地方。
不幸的是,它只会自动对焦一次。当它发挥作用时,它也会弄乱fadeIn
。之后,我必须刷新页面才能再次自动对焦。
此YouTube视频展示了我想要完成的任务:https://www.youtube.com/watch?v=T5n3m2LRy5Y
答案 0 :(得分:0)
设置自动对焦属性不会导致焦点发生变化。相反,您应该使用.focus()方法。
$(".dk").hide(0);
$("#fus").click(function () {
$(".dk").fadeOut(100);
$("#sim").removeAttr("autofocus")
});
$("#ys").click(function (e) {
$("#s,#u,#n,#l,#a,#m,.dk").hide(100);
$("#re,#r").animate({"margin-left": "0px"}, 200);
$("#s,#u,#n").animate({ "margin-left": "2px"}, 200);
$("#sim").delay(300).focus();
$(".dk").fadeIn(100);
e.stopPropagation();
});
})
此外,.delay不会延迟非动画,因此要延迟焦点,您需要使用setTimeout。
setTimeout(function(){
$("#sim").focus()
},300)