光标跳回输入字段

时间:2019-06-07 15:17:16

标签: javascript angularjs

我目前可以将光标自动聚焦到按预期方式工作的特定字段(显示模态时)。问题是,当我单击相同格式的另一个字段并开始键入时,光标会跳回到具有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 :(得分:0)

ng-show并不意味着您可能会认为它是什么意思,ng-show控制是否应显示元素,而不是“在显示时执行此功能” 因此,每次angular评估是否需要显示输入元素时,您的元素都会触发onFocus。

如果只想在加载对话框时触发焦点,则只需调用 $ scope.giveFocus()在控制器功能的末尾。并删除ng-show属性

您还可以使用$ onInit方法,一旦视图初始化,angularjs就会调用此方法,这可能是因为该元素还不在dom中。 所以像

this.$onInit = function() {
    $(**'#responsecode'**).focus();
};