Angularjs输入场焦点事件?

时间:2014-09-02 22:06:58

标签: javascript html angularjs angularjs-directive

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

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

我想要做以下事情:

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

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

3 个答案:

答案 0 :(得分:51)

您正在查看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)">

答案 1 :(得分:5)

如果您正在使用可能希望应用于整个应用程序中的字段的功能,则可以将其置于指令中。 下面是一个根据字段的焦点或模糊添加和删除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);
    });
  }
};
});

答案 2 :(得分:3)

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

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