在表单提交后将Focus放到表数据元素中

时间:2015-07-09 05:39:13

标签: javascript jquery html

无效的代码

$(document).ready(function() {
    if the action is successful and returns a success message then Only{
         document.getElementById("tabledataid_row").focus();
    }
});

表数据内容

<table>
    <tr>
        <td id="tabledataid_row"></td>
    </tr>
</table>

我希望在提交页面后将焦点放回到表格数据<td>。例如,在Struts操作中,提交将表单返回到屏幕顶部。我尝试使用JavaScript方法focus(),它适用于textfield或输入类型的元素。

但是当我为<td>元素分配一个id然后在onload / document ready形式中选择它然后像上面那样调用focus()时,它就无效了。

请注意,我已经在各个地方插入了tabindex,这个元素id有tabindex 4.所以,我不想更改tabindex以获得焦点来到id。只有可视页面才能以所需字段可见的方式进行移动。

2 个答案:

答案 0 :(得分:5)

您只能关注input元素。您要做的是确保id在视图中。您可以使用scrollIntoView()实现您想要做的事情(“关注”HTML元素)。

document.getElementById("tabledataid_row").scrollIntoView();

答案 1 :(得分:1)

(从https://stackoverflow.com/a/3656524/1222635被盗)

给td一个tabindex属性。这使它具有可聚焦的能力。

<td id="tabledataid_row" tabindex="-1"></td>

更新

将tabindex设置为-1使得它只能通过脚本进行聚焦,这意味着用户无法选择它。