ajax を使用して、動的な InputTextArea を作成しようとしています。私は説明します: ユーザーが自分のテキストを書くことができる inputTextArea がありますが、これの文字数を制限したいと思います。サーバー側にしたくないので、基本的に送信ステップでこの入力のサイズを確認します。動的にしようとしています。文字数に達すると、ユーザー入力がカットされます。
だから、私はこのコードを書きます:
<h:inputTextarea value="#{bean.val}" id="area">
<a4j:ajax event="keyup" listener="#{bean.cutoff}" execute="@this" render="area" />
</h ...>
そして、私の Bean では、リスナーは非常に基本的なことを行います。
public void cutoff() {
if(val.length() > 100)
val = val.substring(0, 100);
}
実行すると、次の問題が発生します。文字を入力するたびに、inputTextArea へのフォーカスが失われます。だから本当に退屈です。
a4j:ajax に属性を追加しようとしました:
<a4j:ajax ... onbeforedomupdate="area.focus();"/>
しかし、それは機能しません: 文字を入力することはできますが、関数 (cutoff()) は呼び出されなくなりました。
だから私は何をすべきかわからない。最初のソリューションは関数を起動しますが、フォーカスを失いました.2番目のソリューションはフォーカスを取り戻しますが、関数を起動しません(初めて実行したときのみ)...
この問題の解決策があれば、それは素晴らしいことです。
前もって感謝します。