我在木偶视图上有这个功能
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);
},
答案 0 :(得分:2)
我同意setTimeout不是最好的解决方案,并且还表明你试图在它存在之前访问该元素。
如果您使用深层嵌套的布局和视图,我发现onShow
方法的行为很奇怪。可能发生的情况是,如果在层次结构中的任何一点,您在布局的.show()
中调用onRender
,那么该布局的每个子视图都会立即响应该特定{{1}触发的“show” }。这意味着可以在DOM子树准备好或插入DOM之前调用这些视图'show()
方法。
如果你正在做很多深度嵌套的观看,我会仔细检查并确保你只是在布局'onShow()
方法中调用.show()
。
答案 1 :(得分:0)
请改用:$('#boxId')[0].focus()
答案 2 :(得分:0)
我很好奇聚焦标签是否有效?尝试聚焦输入而不是? 你是否在正确的时间呼叫焦点?您是否尝试在ready或settimeout或body onload上的文档中执行此操作
$(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>
答案 3 :(得分:0)
如果您使用setTimeout
,我猜您在元素可用之前就致电$('#boxId').focus();
- 您的<script>
高于<input>
。
在几乎所有情况下,您都应该在关闭正文标记<script>
之前放置</body>
标记。这有很多原因,防止这类问题就是其中之一。