5

私のページには次の単純なコンボボックスがあります。

<rich:comboBox value="#{groupConfig.group}"
               styleClass="userCombo"
               filterNewValues="false"
               directInputSuggestions="true">
  <f:selectItems value="#{
    workflowConfigCtrl.groupsFor(groupConfig,appNode.approvalTier)
  }" />
</rich:comboBox>

それは素晴らしく機能しますが、悲しいことに、suggestionsList の一部ではない値の入力を許可します (直接テキスト入力を有効にしたので、これは理にかなっています.

直接テキスト入力を有効にして、ユーザーが提案リストを使用して (数 100 のグループを含む巨大なグループ リストから) すばやくフィルター処理できるようにします。

同時に、リストにない値をユーザーに入力させたくありません。現在のアプローチでは、ユーザーがフォーム全体を保存するときにチェックします。事前に制限する方法はありますか?

javascript onblur= ハンドラーを使用して実行しようとしましたが、dom で selectItem リストが保存されている場所が見つかりません。

4

2 に答える 2

3

を使用して、JavaScriptでコンボボックスリストにアクセスできます

#{rich:component('myComboBoxId')}.comboList.itemsText

および/または

#{rich:component('myComboBoxId')}.comboList.itemsValue

次にjQuery.inArray()、アイテムがリストにあるかどうかを確認するために使用します。

于 2012-09-22T18:25:19.977 に答える
2

次の例のように ID を指定することで、DOM でこのコンボ ボックスにアクセスできるはずです。

<rich:comboBox value="#{groupConfig.group}"
               id="UniqueID"
               styleClass="userCombo"
               filterNewValues="false"
               directInputSuggestions="true">
  <f:selectItems value="#{
    workflowConfigCtrl.groupsFor(groupConfig,appNode.approvalTier)
  }" />
</rich:comboBox>

document.getElementById("UniqueID")その後、DOM でアクセスするために使用できます。

于 2012-08-28T17:54:08.907 に答える