0

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番目のソリューションはフォーカスを取り戻しますが、関数を起動しません(初めて実行したときのみ)...

この問題の解決策があれば、それは素晴らしいことです。

前もって感謝します。

4

0 に答える 0