IE 输入元素焦点不适用于 angular 指令
IE input element focus not working with angular directive
我有一个 div 动态填充输入元素并将焦点设置在第一个输入字段上。焦点适用于 Chrome 但不适用于 IE。这是 plnkr http://plnkr.co/edit/b6urKKilDVRwuqVQfbWt
焦点实际上是在超时函数内完成的,但焦点似乎仍未对输入字段执行任何操作。我正在使用 angular 指令来创建我的表单元素。
directive('ngppParameters', ["$compile","$timeout",function($compile,$timeout) {
return {
restrict: 'E',
link:function($scope,$element,$attrs)
{
$scope.$watch("tree.length", function (value) {
if(value.length===0)
return;
$timeout(function() {
var fields = $("ngpp-parameters input").filter(":visible:first");
console.log("Setting the focus");
if(fields.length>0)
{
console.log("Setting focus");
fields[0].focus();
}
},10);
});
}
};
更新:
这是指令。
fields[0]
不是你想的那样(我以前也犯过同样的错误)。
你想要fields.eq(0)
您也可以直接拨打 fields.focus()
。如果那里只有一个应该可以工作的话。
终于找到了问题所在,IE 正在处理禁用的 parent 并且不让焦点设置在 children 上。
我已经从指令 pp-field 中删除了 disabled="disabled" 属性,它按预期工作。除 IE 之外的所有其他浏览器都没有考虑 parent 的禁用状态。
确保使用 ng-disabled=""
而不是 disabled
属性,以使浏览器忽略它并按预期运行。
我有一个 div 动态填充输入元素并将焦点设置在第一个输入字段上。焦点适用于 Chrome 但不适用于 IE。这是 plnkr http://plnkr.co/edit/b6urKKilDVRwuqVQfbWt
焦点实际上是在超时函数内完成的,但焦点似乎仍未对输入字段执行任何操作。我正在使用 angular 指令来创建我的表单元素。
directive('ngppParameters', ["$compile","$timeout",function($compile,$timeout) {
return {
restrict: 'E',
link:function($scope,$element,$attrs)
{
$scope.$watch("tree.length", function (value) {
if(value.length===0)
return;
$timeout(function() {
var fields = $("ngpp-parameters input").filter(":visible:first");
console.log("Setting the focus");
if(fields.length>0)
{
console.log("Setting focus");
fields[0].focus();
}
},10);
});
}
};
更新:
这是指令。
fields[0]
不是你想的那样(我以前也犯过同样的错误)。
你想要fields.eq(0)
您也可以直接拨打 fields.focus()
。如果那里只有一个应该可以工作的话。
终于找到了问题所在,IE 正在处理禁用的 parent 并且不让焦点设置在 children 上。
我已经从指令 pp-field 中删除了 disabled="disabled" 属性,它按预期工作。除 IE 之外的所有其他浏览器都没有考虑 parent 的禁用状态。
确保使用 ng-disabled=""
而不是 disabled
属性,以使浏览器忽略它并按预期运行。