ng-blur auf ein DIV
Ich versuche zu verstecken DIV
auf Unschärfe (Fokus entfernt wurde, aus der DIV
). Ich bin mit angular und bootstrap. Bisher habe ich versucht die Einstellung "Fokus" auf die DIV
wenn es gezeigt wird und dann ein ng-blur
Funktion, wenn der Benutzer klicken Sie irgendwo auf dem Bildschirm. Das wird nicht funktionieren.
Grundsätzlich das problem ist, ich kann nicht setzen Sie den Fokus auf meine "#lockerBox
" durch JS, meine " hideLocker
" - Funktion kein problem, wenn sich der Fokus meiner DIV
mit dem Sie es anklicken.
<div class="lock-icon" ng-click="showLocker(result); $event.stopPropagation();"></div>
<div ng-show="result.displayLocker" id="lockerBox" ng-click="$event.stopPropagation();" ng-blur="hideLocker(result)" tabindex="1">
$scope.displayLocker = false;
$scope.showLocker = function ( result ) {
$scope.displayLocker = !$scope.displayLocker;
node.displayLocker = $scope.displayLocker;
function setFocus() {
angular.element( document.querySelector( '#lockerBox' ) ).addClass('focus');
}
$timeout(setFocus, 100);
};
$scope.hideLocker = function ( node ) {
$scope.displayLocker = false;
node.displayLocker = $scope.displayLocker;
};
- Haben Sie versuchen, übergeben $event zu Ihrem hideLocker und dann aufrufen $event.Ziel.focus()? Ich würde auch loszuwerden, die stopPropagation Geschäft, es sei denn, Sie es wirklich brauchen.
- Nein, das Ziel könnte sein, alle anderen Elemente auf dem Bildschirm. Ich muss den Fokus in die "showLocker" - Funktion. Und das element, das ist das Ziel dieser Veranstaltung ist ein weiterer DIV-unabhängig von der DIV, die ich brauche, um zu fokussieren.
- Was ist ng-Fokus und ein Grundstück, auf Ihre view-Modell? Wenn man eine ng-Fokus auf das richtige element dann alles, was Sie tun müssen, ist zu ändern Sie Ihr Modell.
- warum sind Sie mit Schärfe und Unschärfe auf
div
Elemente, die nicht contenteditable? Was ist das Ziel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie einfach
tabindex="-1"
attr derdiv
und es gibt es das gleiche Verhalten, wie ein input -https://jsfiddle.net/ast12nLf/1/
(Inspiriert von hier - https://stackoverflow.com/a/17042452/831294)
Sogar ich hatte das gleiche problem - war aber in der Lage, es zu beheben, mithilfe von 'mouseup' Ereignis, auf das gesamte Dokument auf einer benutzerdefinierten Richtlinie folgende code ist der code,
wo bin ich Umschalten ein Akkordeon in einem div-Container als pop-up mit ng-show()="variable"
nun ist diese variable ist hier der Schlüssel über Menü toggle-button-HTML-Element, div pop-up-HTML-Element, und die benutzerdefinierte Richtlinie zu handhaben Maus!
JS:
container, wo wird das DOM-element, das Sie angewendet 'hideOnMouseUpElsewhere' Richtlinie über die zusammen mit dem zusätzlichen Attribut "excludeClick' und e.Ziel ist die ein DOM-element, wo Sie auf
Folgenden ist der HTML-code für eine accrodian bootstrap angular popup-Menü:
HTML:
Landete ich nur die Einstellung der blur-event auf dem element mit dem onclick.