繁体   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