我一直在研究很多焦点指令,特别是发布here的那些指令。
但似乎没有一个适用于我的场景。我有一个tabset和一个带有ng-repeat
的表,它创建了带有输入的行。我创建它们的方式是使用最后一行末尾的ng-blur
复选框,以便ng-blur
触发addNewRow
方法。我想要的是将第一个输入聚焦在新创建的行上,但焦点转移到浏览器搜索栏。
我创建了一个fiddle来使用第一个发布的link中的指令来显示问题。
我测试了这个指令:
soccerApp.directive('setfocus', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var focus = !! attrs.setfocus && !attrs.setfocus.replace(/true/, '');
if (focus === true) {
//alert(element);
element[0].focus();
}
}
};
});
并且element[0].focus();
在我创建新行但实际上没有设置焦点时会触发。
有人可以看一看并告诉我可能出现的问题吗?
注意:我们的想法是使用TAB键循环输入,直到最后一个。
答案 0 :(得分:0)
正如Deblaton Jean-Philippe指出的那样
问题在于,当您从最后一个输入“标签”时,您的浏览器会将焦点设置在页面之外。所以你不再对它有任何控制。我不知道是否可以覆盖它而不在下面创建一个假的不可见输入以保持焦点到页面
我错过了一个假的输入,所以我在我的桌子底部添加了一个假的<a href="javascrip:;" id="bottom"></a>
并且它有效