установить фокус на текстовое поле из контроллера angularJS - PullRequest
0 голосов
/ 22 октября 2018

Я создаю веб-приложение, в котором я использую angularJS, у меня есть 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 голосов
/ 22 октября 2018

Если вы используете setTimeout, вы должны использовать $scope.$apply(), чтобы обеспечить внесение изменений в область.Или вы можете использовать $timeout:

r.dojChange = function() {
  var currentTarget = event.target;
  $timeout(function() {
    r.reg.mddoj = currentTarget.value; 
    document.querySelector('[title="EmailID"]').focus(); //<---
  }, 500)
}
0 голосов
/ 22 октября 2018

Чтобы выделить элемент из кода AngularJS, вам необходимо выполнить следующее:

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