簡體   English   中英

專注於DOM元素不起作用

[英]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();">

http://api.jquery.com/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM