2014-09-02 9 views
30

i verwenden AngularJS und ich habe ein normales Eingabefeld wie folgt erstellt:Angularjs Eingabefeld Fokusereignis?

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

Ich möchte folgendes:

, wenn jemand in das Eingabefeld klickt, möchte ich dann zum Beispiel Verfahren A. nennen Er schreibt Text in dieses Feld und wenn die Person irgendwo auf meiner Seite klickt, so dass das Eingabefeld nicht mehr fokussiert ist, sollte sie Methode B aufrufen. Ist das mit angularjs möglich? Wenn ja, wie kann ich das tun? ng-focus ist nur am Eingangsereignis, aber nicht am Ausgang aktiv.

Ich möchte etwas mit dieser Methode sperren, Methode A setzt nur einen Wert auf wahr und Methode B setzt den gleichen Wert auf false. aber ich muss wissen, wann das Eingabefeld aktiv ist und wann nicht.

Antwort

47

Sie betrachten ng-focus und ng-blur.

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

Auf einer Seite zur Kenntnis, CSS-Klassen statt Inline-Styles verwenden .. :)

Oder nur die gleiche Methode mit dem Argument aufrufen und den Wert acc gesetzt: - Sie

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

http://plnkr.co/edit/Wo0Lp0?p=preview – PSL

3

Methode B binden ng-blur Richtlinie des Winkels kann zu erkennen, wenn ein Eingang Fokus verliert

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

Wenn Sie Funktionen verwenden, die Sie möglicherweise auf Felder in Ihrer gesamten Anwendung anwenden möchten, können Sie sie in eine Direktive einfügen. Hier ist ein Beispiel, das eine CSS-Klasse hinzufügt und entfernt auf dem Fokus oder Unschärfe eines Feldes basiert:

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); 
    }); 
    } 
}; 
}); 
+0

Nizza und ordentlich - Sie können Verwenden Sie auch 'element.focus()' und 'element.blur()', die von jQuery kommen, da dies ein bisschen aufgeräumter ist. – Boris

Verwandte Themen