1

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

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);
        },
4

4 回答 4

2

我同意 setTimeout 不是最好的解决方案,并且表明您正在尝试在元素存在之前访问它。

我发现onShow如果您使用深度嵌套的布局和视图,该方法的行为可能会很奇怪。可能发生的情况是,如果在层次结构中的任何点调用.show()布局onRender,那么该布局的每个子视图都会立即响应由该特定show(). 这意味着这些视图的onShow()方法可以在它们的 DOM 子树准备好或插入 DOM 之前被调用。

如果你正在做很多深度嵌套的视图,我会仔细检查并确保你只调用.show()你的布局onShow方法。

于 2013-11-19T01:30:39.327 回答
0

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

于 2013-11-12T18:11:15.317 回答
0

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

$(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>
于 2013-11-12T18:14:14.613 回答
0

如果你使用setTimeout那么我猜你是 $('#boxId').focus();在元素可用之前调用的——你<script>在你的<input>.

在几乎所有情况下,您都应该将标签放在<script>结束正文标签之前。</body>造成这种情况的原因有很多,防止此类问题就是其中之一。

于 2013-11-12T18:40:07.663 回答