2017-08-11 30 views
0

ユーザーが入力フィールド内をクリックするとdivを表示し、外側をクリックすると非表示にします。フィールド内を再度クリックすると、そのフィールドは非表示にならないはずです。 ここに私の試みです: JSFIDDLE LINKangularjs divを表示して入力フィールド内をクリックし、非表示にすると非表示にする

<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> 

、問題がページを開いたとき、私はヘルプテキストを参照してくださいということであり、それが突然消え、私は、フィールド内をクリックしたときに、それが再び表示されますが、再度フィールド内をクリックすると消えます。今私はそれがフィールドの外でクリックされた場合にのみ非表示にします。 これを手伝ってください。

答えて

4

使用NG-焦点代わりの良い

Plunker Example

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

なぜ要素を隠すのにもう1秒かかるのですか?あなたのプランナーに即座に効果があります。どのようにしてCSSのトランジションも変更できますか?あなたはng-classを削除しましたか? – cplus

+0

@JeevaArulanandam 'ng-class =" {'hidden':!focused} ''で動作しません。 –

+0

あなたのcssファイルに '.hidden {display:none;}' –

1

以下のコードを参考にしてください。

<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

をNGクリックが、私はそれは/非表示を示していたときに、CSSトランジションを追加できるようにしたいです。だから私はng-classを使ったのです。そして、あなたのソリューションでは、ng-blurはそれを隠すのに数秒かかります...これはちょっと面倒です。 – cplus

関連する問題