IE输入元素焦点不适用于angular指令

时间:2015-04-07 18:20:00

标签: angularjs internet-explorer html-input

我有一个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);              
            });
        }        
    };

更新      

这是指令。

3 个答案:

答案 0 :(得分:2)

终于找到了这个问题,IE正在治疗残疾父母而不是让孩子们集中注意力。

我从指令pp-field中删除了disabled =“disabled”attr,它按预期工作。除IE之外的所有其他浏览器都不考虑父母禁用状态。

答案 1 :(得分:2)

确保使用ng-disabled=""代替disabled属性,以使浏览器忽略它并按预期行事。

答案 2 :(得分:0)

fields[0]不是您的想法(之前我已经被同样的错误抓住了)。

您想要fields.eq(0)

https://api.jquery.com/eq/

您也可以刚刚调用fields.focus()。如果那里只有一个应该有效。