Ajaxフレームワーク UI部品リファレンス
目次 索引 前ページ次ページ

第4章 機能付加部品> 4.1 入力支援機能

4.1.1 AutoCompleter

AutoCompleterは、選択可能な文字列リストを表示し、テキストフィールドの入力を支援する機能です。

AutoCompleterは、TextInputSelectListをつなぐ機能付加部品です。

機能付加対象は、TextInputです。

示例

以下にAutoCompleterの表示例を示します。

[図: 表示例]

[図: 動作イメージ]

  1. 候補リストが表示されている状態では、↓カーソルキーにより選択できます。選択候補リストの一番上が確定候補(マウスオーバーと同じ)になります。
  2. 確定候補は、↑↓カーソルキーまたはマウスオーバーで変更できます。
  3. 候補リストが表示されている状態でも、選択候補がある状態でも、カーソルはTextInputの中にあり、←→カーソル移動やキー入力を受け付けます。
  4. 確定候補は、マウス左クリックまたはEnterキーで確定します。(fixイベント発行)
  5. 確定した場合、SelectListのラベルがTextInputに設定されます。ラベルについては、SelectListlabelProviderプロパティを参照してください。
  6. 確定した場合または候補がない場合は、SelectListは消えます。
  7. 候補リストに指定されたSelectListのプロパティやスタイルプロパティは、以下のように変更されます。

    名前

    変更後の値

    プロパティ

    tabIndex

    -1

    スタイルプロパティ

    position

    absolute

    top, left

    TextInputの入力部分の左下の座標

    width

    (adjustプロパティがtrueの場合だけ)TextInputの入力部分のwidth

    visibility

    hidden

    zIndex

    TextInputのzIndex+1

述形式

<div rcf:type="AutoCompleter" rcf:target="xxx" rcf:list="xxx"></div>

または

<span rcf:type="AutoCompleter" rcf:target="xxx" rcf:list="xxx"></span>


子要素は記述できません。
本部品は画面に表示されないため、<div>タグおよび<span>タグのどちらで記述しても違いはありません。

ロパティ

表の項目の意味は、“表の項目の意味”を参照してください。

名前

データ型

説明

省略

省略値

属性指定

更新

部分更新

target

String

機能付加対象のTextInputのrcf:idを指定します。

不可

-

不可

不可

list

String

候補を表示するSelectListのrcf:idを指定します。

不可

-

不可

不可

adjust

Boolean

SelectListの幅を変更するかどうかを指定します。

  • true:候補を表示するSelectListの幅を、機能付加対象のTextInputの幅に合わせる
  • false:SelectListの幅は変更しない

true

不可

不可

completer

complete関数を持つオブジェクト

キー入力操作ごとに候補の配列を作成する関数です。
パラメタは以下の2つです。

  • value: TextInputの現在の文字列
  • callback: 候補リストに表示するデータの配列を渡す関数
    配列のメンバは、String型、Object型、またはArray型

デフォルトcompleter
(注)

不可

不可

そのほかにも、画面部品および機能付加部品で共通のプロパティを指定することができます。詳細は、“画面部品共通プロパティ”、および“機能付加部品共通プロパティ”を参照してください。

注) デフォルトcompleter
開発初期段階でJavaScriptを記述しなくても動きを確認できるよう、以下の配列をコールバック関数に返します。

[
  value + "0", //現在のtextプラス0から9の数字を付けたメンバ数10の配列
  ...
  value + "9"
]

[completerの例(ローカル)]

<script type="text/javascript">
//<![CDATA[
  var user_obj = {
/**
 * param value TextInputの文字列
 * param callback 候補リストを渡す関数
 */
complete: function(value, callback) {
                //
                //候補一覧の配列を作成しコールバック関数に渡します。
                //
                var ret = ['候補1', '候補2', '候補3'];
                callback(ret);  //自発的にコールバック関数の呼出しを行う。
    }
  }
//]]>
</script>

<div rcf:id="input0" rcf:type="TextInput"></div>
<div rcf:id="output0" rcf:type="SelectList"></div>
<div rcf:type="AutoCompleter" rcf:target="input0" rcf:list="output0" rcf:completer="user_obj"></div>

[completerの例(非同期通信時)クライアント側]

<script type="text/javascript">
//<![CDATA[
  var user_obj = {
    complete: function(value, callback) {
      var uiSet2Bean = {
        keyword:value
      };
          
      var reqParam = {
        beanId:"UiSet2Bean",
        verb:"search"
      };
          
      var option = {
        url:"acf/apc",
        callback:function(res){
          callback(res.menu);
        }
      };
      UjiRequest.send(uiSet2Bean,reqParam,option);
    }
  }
//]]>
</script>

<div rcf:id="autoCompleterInput" rcf:type="TextInput" rcf:value="parts-"></div>
<div rcf:id="autoCompleterList" rcf:type="SelectList"></div>
<div rcf:type="AutoCompleter" rcf:target="autoCompleterInput"
     rcf:list="autoCompleterList" rcf:completer="user_obj"></div>

[completerの例(非同期通信時)サーバ側ビジネスクラス]

  public Object search(DispatchContext context, uiSet2.UiSet2Bean dataBean) {
    /* keywordで開始される文字をAutoCompleterのメニューとして返します */

    String keyword = dataBean.getKeyword();
    ArrayList menu = new ArrayList();

    for (int i=0;i<MENULIST.length;i++){
      if(MENULIST[i].startsWith(keyword)){
        menu.add(MENULIST[i]);
      }
    }
    dataBean.setMenu(menu);
    return dataBean;
  }

非同期通信によって入力値の候補をサーバアプリケーションから取得する場合は、上記のほかにもApcoordinator連携に必要なコマンドマップやデータBeanがあります。

非同期通信によって入力値の候補を取得するサンプル(uiSet2)については、“ユーザーズガイド”の“サンプルアプリケーション”を参照してください。

ベントリスナ

名前

説明

イベントオブジェクト

onFix

入力値が確定した場合に呼ばれます。

ValueChangeEvent

JavaScript API

固有のAPIはありません。部品共通のJavaScript APIは、“画面部品共通JavaScript API”を参照してください。

足事項

IMEの候補リストの表示タイミング
IMEが有効になっている場合、候補リストが表示されるタイミングは、ブラウザによって異なります。

候補リスト非表示のタイミング
表示された候補リストは、以下のどれかのタイミングで非表示となります。

adjust=falseとした場合のリストのサイズ
adjustプロパティをfalseにする場合には、SelectListにサイズを指定してください。
SelectListのサイズを指定しないでadjustプロパティをfalseにした場合、候補リストが正しく表示されません。

マウスによる候補選択時に発生するTextInputのイベント
マウスによる候補の選択を行った場合、Internet ExplorerではTextInputからフォーカスがいったん外れます。これは、Internet ExplorerとFirefoxのブラウザの動作の違いによるものです。そのため、Internet ExplorerとFirefoxでは、TextInputのイベント発生が異なります。

候補リストに指定されたSelectListのプロパティについて
候補リストに指定されたSelectListの以下のプロパティは、設定しても意味がありません。


目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED