将焦点设置为禁用并使用AngularJS再次启用后,将焦点恢复到文本输入字段

时间:2014-11-18 09:16:56

标签: javascript angularjs

我有一个输入字段和一个$ watch超出其范围变量,触发一些服务器请求。我在请求期间禁用了该字段,但是当它再次重新启用时,该行中缺少游标。我希望它再次出现。

我试图通过例如恢复焦点来恢复焦点。指令How to set focus on input field?但由于某些原因它与启用/禁用字段无关(我同时设置&#34;聚焦&#34;和#34;同时启用&#34;变量)。< / p>

2 个答案:

答案 0 :(得分:4)

创建指令

app.directive('focusMe', function($timeout) {
  return {
    scope: {
      trigger: '=focusMe'
    },
    priority: -1,
    link: function(scope, element) {
      scope.$watch('trigger', function(value) {
        if (value === true) {
          $timeout(function() {
            element[0].focus();
            scope.trigger = false;
          }, 300);
        }
      });
    }
  };
});

将指令添加到输入字段

<input type="text" focus-me="focusInput" data-ng-model="myModel" required .. />
控制器内的

$scope.focusInput=true;

$scope.focusInput为真时,输入字段将被聚焦

答案 1 :(得分:1)

简单方法

<input type="text" ng-disabled="true" required ... />

在您想要启用并关注输入的事件之后,您应该在.ts文件中执行此操作

$scope.enableInput = function () {
  document.getElementById("password").disabled = false;
  document.getElementById('password').focus();
};

在设置禁用并使用AngularJS再次启用后,您可以将焦点恢复到文本输入字段