将焦点设置为没有名称或 ID 的控件

Set Focus to Control With No Name or ID

我想自动将焦点设置在 Angular 的 ui-grid 过滤器中的输入控件上:

但是,该控件没有名称或 ID。这是 HTML 的样子:

<div class="gridFullThin" ui-grid="gridApps" ui-grid-selection ui-grid-resize-columns></div>

我尝试添加此属性,但没有帮助:

autofocus="autofocus"

在 IE 中,在 F12 工具 DOM Explorer 中,我可以看到输入如下所示:

<input class="ui-grid-filter-input ui-grid-filter-input-0 ng-touched" aria-label="Filter for column" type="text" placeholder="" ng-attr-placeholder="{{colFilter.placeholder || ''}}" ng-model="colFilter.term">

它没有 ID。有什么方法可以自动将焦点放在此处吗?

** 编辑 ** - 这是生成的 HTML,如 F12 所示(输入元素以蓝色突出显示):

假设您无法编辑标记以添加自己的 ID,您仍然可以通过 class 或将输入指定为具有 ID 的父项的子项来定位。

聊天中讨论的正确答案:

var elements = document.querySelector('.modal .ui-grid-header-cell .ui-grid-filter-input-0'); 
elements.focus();

如果这是 HTML 标记中的第一个输入元素,那么您可以这样做:

document.forms[0].elements[0].focus();

否则,如果您在此输入之前有隐藏元素,则必须遍历表单元素并找到第一个非隐藏元素。