[英]focus to a DOM element doesn't work
我在木偶视图上具有此功能
onShow: function(){
// $('#boxId').val("I am here");
$('#boxId').focus();
}
当我使用$('#boxId').val("I am here");
它工作正常,元素的值在I am here
。 但是,当我尝试着重于该元素时,它不起作用,也就不集中。 知道是什么问题吗?
我也试过
<input type="text" class="input_txt" id="boxId" maxlength="8" onload="$('#boxId').focus()">
和
onShow: function(){;
$(document).ready(function(){
$('#boxId').focus();
});
}
但它也不起作用。
终于解决了:
onShow: function(){
setTimeout(function(){
$('#boxId').focus();
},1000);
},
我同意setTimeout并不是最好的解决方案,并且表明您正在尝试访问元素之前。
我发现,如果使用深度嵌套的布局和视图, onShow
方法的行为可能会很奇怪。 可能发生的是,如果在层次结构的任何点上在布局的onRender
中调用.show()
,则该布局的每个子视图都将立即响应由该特定show()
触发的“ show”。 这意味着这些视图的onShow()
方法可以在它们的DOM子树准备好或插入DOM中之前被调用。
如果您要进行很多深层嵌套的视图,我将仔细检查并确保您仅在布局的onShow
方法中调用.show()
。
改用它: $('#boxId')[0].focus()
我很好奇聚焦标签是否有效? 尝试集中输入? 您是否在正确的时间打电话给焦点? 您是否尝试过在准备就绪或settimeout或正文加载时在文档中执行此操作
$(document).ready(function(){
$('#myBox').focus();
});
setTimeout(function(){
$('#myBox').focus();
},1000);
<body onload="$('#myBox').focus();">
-请注意,准备就绪的文档会随机进入页面并在页面加载时运行
<input type="text" id="selectMe"/>
<script>
$(document).ready(function(){
$('#selectMe').focus();
});
</script>
如果使用setTimeout
那么我猜您正在调用$('#boxId').focus();
在元素可用之前-您的<script>
在<input>
之上。
几乎在每种情况下,您都应将<script>
标记放在结束body标记</body>
之前。 造成这种情况的原因很多,防止此类问题就是其中之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.