将焦点设置为无名称或ID的控制

时间:2016-12-28 19:33:39

标签: javascript html angularjs angular-ui-grid

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

enter image description here

但是,该控件没有名称或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所示(输入元素以蓝色突出显示):

enter image description here

2 个答案:

答案 0 :(得分:1)

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

正如聊天中讨论的那样正确答案:

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

答案 1 :(得分:0)

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

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

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