[英]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.