курсор возвращается в поле ввода - PullRequest
0 голосов
/ 07 июня 2019

У меня в данный момент есть автофокусировка курсора на определенном поле, которое работает как положено (когда отображается модальное). Проблема в том, что когда я нажимаю на другое поле в той же форме и начинаю печатать, курсор возвращается к исходному полю с атрибутом autofocus. Есть идеи, что вызывает это? заранее спасибо

Это для углового 1.7 проекта. Я попытался переместить функцию автофокуса в разные места внутри контроллера, ни одно из которых не имело значения.

// Контроллер

angular.module('qmsControllers').controller('ResponseCodesModalCtrl', function($scope) {
    $scope.giveFocus = function() {
        $(**'#responsecode'**).focus();
        return true;
      };
 });

// вид

  <div class="form-group modal-form-group">
      <label for="code" class="col-sm-2 control-label">Response Code:</label>
        <input type="text" class="some class="0 === editMode"
               ng-change="onResponseCodeChanged($event)" 
               **id="responsecode"**
               **ng-show="giveFocus()"**
               name="code" ng-model="response" />

  </div>

Ожидаемый результат - автофокусировка, возникающая при отображении модального окна, но допускающая ввод в поля, отличные от поля автофокусировки.

1 Ответ

0 голосов
/ 07 июня 2019

ng-show не означает, что вы думаете, что это означает, ng-show контролирует, должен ли элемент отображаться, а не «выполняет эту функцию, когда меня показывают». Так что каждый раз, когда angular оценивает, нужен ли элемент вводачтобы показать, что ваш элемент вызывает onFocus.

Если вы хотите активировать фокус только при загрузке диалога, вы можете просто вызвать $ scope.giveFocus () в конце функции контроллера.И удалите атрибут ng-show

, вы также можете использовать метод $ onInit, который этот метод будет вызывать angularjs после инициализации представления, возможно, элемент еще не находится в dom.Так что-то типа

this.$onInit = function() {
    $(**'#responsecode'**).focus();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...