通过id AngularJS设置焦点

Setting focus by id AngularJS

本文关键字:焦点 设置 AngularJS id 通过      更新时间:2023-09-26

单击+按钮后,焦点将转移到HTML中的另一个输入字段。我希望将重点放在当前输入字段上,除非用户单击另一个输入字段。这时我想把焦点移到被点击的输入框

<div layout="row" layout-align="center center">
    <md-input-container  class="md-block" flex="50">
        <input required id="circleTimeWordListEditText" type="text" placeholder="Words List" ng-model="circleTime.word"/>
        <div ng-messages="$error">
            <div ng-message="required">This is required.</div>
        </div>
    </md-input-container>
</div>
<div layout="row" layout-align="center center">
    <md-button class="md-raised md-primary" type="submit"
               ng-click="circleTime.onAddButtonClicked()">+
    </md-button>
</div>

当前我正在做这个:

document.getElementById('circleTimeWordListEditText').focus();

,我也试过了,但是它给了我NOSEL错误。

angular.element('circleTimeWordListEditText').focus();

我也试过这个解决方案:

mainApp.factory('focus', function($timeout, $window) {
    return function(id) {
        // timeout makes sure that it is invoked after any other event has been triggered.
        // e.g. click events that need to run before the focus or
        // inputs elements that are in a disabled state but are enabled when those events
        // are triggered.
        $timeout(function() {
            var element = $window.document.getElementById(id);
            if(element)
                element.focus();
        });
    };
});
mainApp.directive('eventFocus', function(focus) {
    return function(scope, elem, attr) {
        elem.on(attr.eventFocus, function() {
            focus(attr.eventFocusId);
        });
        // Removes bound events in the element itself
        // when the scope is destroyed
        scope.$on('$destroy', function() {
            elem.off(attr.eventFocus);
        });
    };
});

onAddButtonClicked : function(elem) {
            //do stuff
            focus('circleTimeWordListEditText');
            /*var temp = document.getElementById('circleTimeWordListEditText');
            alert(temp);
            temp.focus();
            angular.element('circleTimeWordListEditText');
            angular.element('circleTimeWordListEditText').focus();*/
        }
    },

但是它也不工作。

这个问题的建议解决方案是什么?

我认为你可以使用下面的代码片段。

var myEl = document.getElementById('circleTimeWordListEditText');
var angularEl = angular.element(myEl);
angularEl.focus();

我也有同样的问题。这对我很有效。我希望这对你也有用!

function someFunction() 
{
var element = angular.element("#id here");
element.focus()
}

对你来说,下面可能有用:

function onAddButtonClicked() 
{
   var element = angular.element("#circleTimeWordListEditText");
   element.focus()
}