首页 文章

Angularjs输入场焦点事件?

提问于
浏览
32

我使用angularjs,我创建了一个正常的输入字段,如下所示:

<input type="text" style="border: none" ng-model="model" >

我想要做以下事情:

如果有人在输入字段中单击,我想调用示例方法A.然后他在此字段中写入文本,如果该人在页面中的某处单击以便输入字段不再聚焦,则应调用方法B.这是可能的与angularjs?如果是的话,我该怎么做? ng-focus仅在输入事件处激活,但不在输出处激活 .

我希望锁定一些东西,方法A只设置一个值为true,方法B将相同的值设置为false . 但我必须知道输入字段何时处于活动状态,何时不处于活动状

3 回答

  • 50

    你正在看ng-focusng-blur .

    <input type="text" style="border: none" ng-model="model" ng-focus="A()" ng-blur="B()">
    

    另外,使用css类而不是内联样式.. :)

    或者只是用参数调用相同的方法并设置值acc: -

    <input type="text" style="border: none" ng-model="model" ng-focus="A(true)" ng-blur="A(false)">
    
  • 3

    如果您正在使用可能希望应用于整个应用程序中的字段的功能,则可以将其放入指令中 . 这是一个根据字段的焦点或模糊添加和删除css类的示例:

    angular.module('myApp').directive('inputFocus', function () {
    
    var FOCUS_CLASS = 'input-focused';
    return {
      restrict: 'A',
      priority: 1,
      require: 'ngModel',
      link: function (scope, element, attrs, ctrl) {
        element.bind('focus',function () {
          element.parent().addClass(FOCUS_CLASS);    
        }).bind('blur', function () {
          element.parent().removeClass(FOCUS_CLASS);
        });
      }
    };
    });
    
  • 5

    您可以将方法B绑定到angular的 ng-blur 指令,以检测输入何时失去焦点

    <input type='text' ng-focus='methodA()' ng-blur='methodB()' ng-model='model'>
    

相关问题