Home > PROGRAM SAMPLE > テキストボックスプルダウン (改良版)

テキストボックスプルダウン (改良版)

4月 18th, 2007
TextBoxPulldown2

■これ何?
 HTMLのテキストボックスに検索機能付きプルダウンを追加します。

 次のサイトを参考にして作成しました。
 http://itpro.nikkeibp.co.jp/article/COLUMN/20060115/227278/
 
■特徴
 <div>をおかないので,表形式フィールドに対応できます。
 キーボードで操作可能です。⇒改良
 AJAX+DWRを利用しています。⇒改良

■必要なファイル

 /ajax/initcompletion.js
 /ajax/prototype.js

■操作方法

 マウスオーバー :選択色が変化します。
 マウスアウト :選択色が戻ります。
 マウスクリック :値の確定
 ↓キー :選択色が下へ移動します。
 ↑キー :選択色が上へ移動します。
 ESCキー :プルダウンが消えます。
 Enterキー :値の確定

■機能一覧

//プルダウンデータをクリアする
text_pulldown.clearCompletionItems
//横幅をセットする
text_pulldown.setCompletionWidth
//高さを設定する(スクロールがある場合)
text_pulldown.setCompletionHeight
//フォントサイズを設定する
text_pulldown.setCompletionFontSize
//設定を超える行数がある場合スクロールバーを付ける
text_pulldown.setCompletionLine
//プルダウンを表示する
text_pulldown.showCompletionItems = function (ary, callback) {
//プルダウンにフォーカスを移す
onFocus()
//TABの時プルダウンをクリア,エンターの時フォーカスプルダウンへ移す
keydownEvent()
//最後にフォーカスがあたったコントロールの名称を返す(汎用)
lostFocusNext()

■使い方

(1)呼び出し側

function initPulldown(obj) {

if(text_pulldown != null) {
text_pulldown.clearCompletionItems();
}

thisform = document.forms[0];

text_pulldown = obj; //プルダウンを設定するテキストボックス

initCompletion(text_pulldown, “div_field_name”); //プルダウンを作成する
text_pulldown.setCompletionWidth(”5cm”); //設定:プルダウンの横幅(必須)
text_pulldown.clearCompletionItems();

createPulldown(text_pulldown.value); //プルダウンを表示する

}

(2)プルダウンを表示する

function createPulldown(str_value) {}

function setPulldownInfo(data) {}

(4)キーボード操作により確定された場合の処理

function setField(data) {

var tmp = data.split(”\t”);

document.getElementById(”xxx”).value = tmp[0];
document.getElementById(”yyy”).value = tmp[1];

}

 ※キーボードを利用しない場合でもこのメソッドは置いてください

 例: function setField(data) {}

(5)JSP側の書き方

<body onclick="lostPullDown();">

<html:text name="form_name" property="field_name" onfocus="initPulldown(this);" onkeydown="keydownEvent();"/>

</body>

■DWRの戻り値

 次の様なリストを作成して,レスポンスしてください。

VALUE11<TAB>VALUE12
VALUE21<TAB>VALUE22
VALUE31<TAB>VALUE32
VALUE41<TAB>VALUE42

  ・
  ・

■既知の問題点

 ・Key操作でスクロールの速度がフォントサイズによって変化する
  ※15pxで利用すると大丈夫です。

以上

source

PROGRAM SAMPLE

Comments are closed.