我想在Angular的网格过滤器中自动将焦点设置在输入控件上:
但是,该控件没有名称或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所示(输入元素以蓝色突出显示):
答案 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();
否则,如果你有隐藏在此输入之前的元素,那么你必须循环遍历表单元素并找到第一个非隐藏元素。