焦点到 DOM 元素不起作用

focus to a DOM element doesn't work

本文关键字:不起作用 元素 DOM 焦点      更新时间:2023-09-26

我在木偶视图上有这个功能

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方法的行为可能会很奇怪。可能发生的情况是,如果您在层次结构中的任何点调用.show() onRender布局,则该布局的每个子视图都将立即响应该特定show()触发的"显示"。这意味着这些视图的onShow()方法可以在它们的 DOM 子树准备就绪或插入到 DOM 中之前被调用。

如果您正在执行大量深度嵌套视图,我会仔细检查并确保您仅在布局的onShow方法中调用.show()

改用这个: $('#boxId')[0].focus()

我很好奇聚焦标签是否有效?尝试聚焦输入?您是否在正确的时间呼叫焦点?您是否尝试过在就绪或设置超时或正文加载的文档中执行此操作

$(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>之前。造成这种情况的原因有很多,防止此类问题就是其中之一。