从angularJS控制器将焦点设置到文本框

时间:2018-10-22 08:23:22

标签: javascript angularjs angularjs-directive angularjs-controller

我正在创建一个使用angularJS的Web应用程序,我有一个jqueryui datepicker,看起来像这样

<input type="text" ng-model="rc.reg.mddoj" ng-blur="rc.dojChange()" title="Date Of Joining" placeholder="Date Of Joining" class="form-control" datepicker />

以及在我的控制器中

r.dojChange = function () {
    var currentTarget = event.target;
    setTimeout(function () { r.reg.mddoj = currentTarget.value; }, 500);
}

执行完此操作后,我想将焦点设置到下一个控件上

<input type="text" ng-model="rc.reg.mdemail" title="EmailID" placeholder="EmailID" class="form-control validatingData" />

如何从angularJS控制器设置对元素的控制。

我只想将焦点放在指令中的元素上,并想在我的r.dojChange function()中调用该指令

2 个答案:

答案 0 :(得分:0)

要聚焦AngularJS代码中的元素,必须执行以下操作:

$timeout(function() {
   const elementToFocus = $element[0].querySelector(<SELECTOR TO YOUR ELEMENT>);
   if (elementToFocus) {
      elementToFocus.focus();
   }
}, 0);

答案 1 :(得分:0)

如果您使用的是<script src="https://code.highcharts.com/highcharts.js"></script> <div id="container" style="height: 400px"></div> ,则必须使用setTimeout来确保对范围所做的更改得到处理。或者,您可以使用$scope.$apply()

$timeout