2017-08-11 2 views
0

Ich möchte mein div anzeigen, wenn der Benutzer in das Eingabefeld klickt, und wenn nur außerhalb geklickt wird, sollte es es ausblenden. Wenn Sie erneut in das Feld klicken, sollte es sich nicht verstecken. Hier ist mein Versuch: JSFIDDLE LINKangularjs div anzeigen, wenn in einem Eingabefeld angeklickt und ausgeblendet, wenn außerhalb geklickt wird

<div ng-app="app"> 
<div ng-controller="HelpCtrl"> 
    <input type="text" id="myText" name="myText" ng-click="showHelp = ! showHelp"> 

    <div class="details" ng-class="{ 'hidden': ! showHelp }"> 
    <p> 
    The help text here! 
    </p> 
    </div> 
</div> 
</div> 

das Problem ist, dass, wenn die Seite geöffnet wird, ich den Hilfetext zu sehen, und es verschwindet plötzlich und wenn ich in dem Feld klicken, zeigt es wieder, aber Es verschwindet nur, wenn Sie erneut in das Feld klicken. Jetzt möchte ich es nur ausblenden, wenn außerhalb des Feldes geklickt wird. Bitte helfen Sie mir dabei.

Antwort

4

Verwendung ng Fokus statt ng Sie auf

Plunker Example

<input type="text" ng-focus="focused = true" ng-blur="focused = false" /> 
<p ng-if="focused">Input has focus!</p> 
+0

Warum dauert es eine Sekunde mehr, um das Element zu verstecken? in Ihrem Plunker ist es sofort wirksam. Wie kann ich auch die CSS-Übergänge ändern? Jetzt, wo du die ng-Klasse entfernt hast? – cplus

+0

@JeevaArulanandam Es wird nicht funktionieren mit 'ng-class =" {'hidden':! Focused} "' –

+0

Ich glaube, Sie vergessen '.hidden {display: none;}' in Ihrer CSS-Datei hinzuzufügen –

1

unter Code sollte Ihnen helfen.

<style> 

.hidden{ 
-webkit-transition: width 2s; transition: width 2s; 
display:none !important;; 

} 
.details{ 
display:block; 
} 
</style> 
    <div ng-app="app"> 
    <div ng-controller="HelpCtrl"> 
       <input type="text" id="myText" name="myText" ng-focus="showHelp = true" ng-blur="showHelp = false"> 

    <div class="details" ng-class="{'hidden':!showHelp}"> 
    <p> 
    The help text here! 
    </p> 
    </div> 
     </div> 
    </div> 
+0

gut, aber ich möchte in der Lage sein, CSS-Übergänge hinzufügen, wenn es ein-/ausblenden. Deshalb habe ich die ng-Klasse benutzt. Und mit deiner Lösung braucht der ng-blur ein paar Sekunden, um ihn zu verstecken ... was ein bisschen nervig ist. – cplus

Verwandte Themen