2017-06-12 3 views
0

私は1つのCSS onClickともう1つのCSS onBlurを使用する必要があるテキストエリアを持っています。しかし、それは更新されていませんonBlur。手伝ってくれませんか ?GXTテキストエリアでCSSが更新されない

final TextArea textarea = new TextArea(); 
textarea.addBlurHandler(new BlurHandler() { 

    @Override 
    public void onBlur(BlurEvent event) { 
     textarea.addStyleName("gxtTextAreaTransparentBackground"); 
    } 
}); 

textarea.addDomHandler(new ClickHandler() { 

    @Override 
    public void onClick(ClickEvent event) { 
     textarea.addStyleName("gxtTextAreaDefaultBackground"); 
    } 
}, ClickEvent.getType()); 

そして、私のCSSコードの下で、

.gxtTextAreaTransparentBackground * { 
    background: red !important; 
    border: 0 none !important; 
    outline: none !important; 
} 

.gxtTextAreaDefaultBackground * { 
    background: white !important; 
    order: 1 none !important; 
} 
+0

うまくいくはずです。 'setStyleName'も試しましたか? –

+0

この質問には関係しませんが、一般的な注意点として、できるだけいつでも '!important'を使わないでください。だから、それらを持っている必要がない場合は、それらを削除する必要があります。 –

答えて

0

あなたはaddBlurHandleraddFocusHandlerを使用することができ、ケース内のテキストエリアにフォーカスがある、あなたはスタイリングを変更することを、仮定し。

また、あなたの問題は、他のスタイルを削除しないということです。そのような

何か作業をする必要があります:

final TextArea textarea = new TextArea(); 

textarea.addBlurHandler(new BlurHandler() { 
    @Override 
    public void onBlur(BlurEvent event) { 
     textarea.addStyleName("gxtTextAreaTransparentBackground"); 
     textarea.removeStyleName("gxtTextAreaDefaultBackground"); 
    } 
}); 

textarea.addFocusHandler(new FocusEvent() { 
    @Override 
    public void onFocus(FocusEvent event) { 
     textarea.addStyleName("gxtTextAreaDefaultBackground"); 
     textarea.removeStyleName("gxtTextAreaTransparentBackground"); 
    } 
}); 

に役立ちます願っています。