SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Script.aculo.usで作成するビジュアルなWebページ

Script.aculo.usで、ビジュアルなWebページを作成しよう

Script.aculo.usのGUI系コンポーネントの基礎

一覧リストから項目を選べるテキスト

 この編集可能テキストの応用として、テキストを入力するのでなく、あらかじめ用意した項目から選んでテキスト表示を変更するというものもあります。これも先ほどの編集可能テキストと似ていますから、併せて覚えておきましょう。

index.htmlのボディを修正
<span id="collection_tag">Windows</span>
<script type="text/javascript">
<!--
new Ajax.InPlaceCollectionEditor( 'collection_tag', 'ajax.php',{collection:["Windows","Linux","Mac OS X"]});
//-->
</script>
図9 テキストを入力するとポップアップメニューが現れる。
図9 テキストをクリックするとポップアップメニューが現れる。

 これもajax.phpに非同期通信して表示を変更していますが、このもajax.phpは先に作成したものをそのまま使いますので特に修正などは不要です。表示されたテキストをクリックすると、ポップアップメニューが現れ、ここで値を選択できるようになります。使い方は、InPlaceEditorとほとんど同じです。

new Ajax.InPlaceCollectionEditor( 'IDの指定', '送信先アドレス',{オプション設定});

 唯一違うのは、オプション設定に「collection」という項目を用意し、そこでポップアップメニューに表示する項目を配列として用意しておく、という点です。後はほぼ同じ感覚で利用することができます。

※注意!

 筆者の環境では、IE7でポップアップメニューが一部機能しない現象が確認できました。筆者の環境によるものかも知れませんが、もしIE7でうまく動作しない場合には、Firefoxなど他のWebブラウザで動作確認をしてみてください。

入力支援機能付のフィールド

 InPlaceEditorやInPlaceCollectionEditorはテキストを編集できるようにするものでしたが、テキストを入力するフィールドに機能を付加するためのものもあります。テキストを入力するとき、リアルタイムに候補を一覧で表示する入力支援機能を付加するものです。

index.htmlのボディを修正
<input id="auto_complete" type="text" size="30" />
<div id="sel_data" class="sel_data" style="display: none;"></div>
<script type="text/javascript">
<!--
var list_data = [
    'Windows 98',
    'Windows 2000',
    'Windows XP',
    'Windows Vista'
];
new Autocompleter.Local( 'auto_complete', 'sel_data',list_data,{});
//-->
</script>
syle.cssに追加
div.sel_data ul {
    list-style-type:none;
    margin:0px;
    padding:0px;
    background-color:#ddddff;
}
div.sel_data ul li {
    list-style-type:none;
    cursor:pointer;
}
div.sel_data ul li.selected {
    background-color:#aaaaff;
}
図10 テキストをクリックするとポップアップメニューが現れる。
図10 テキストをクリックするとポップアップメニューが現れる。

 ページをリロードし、入力フィールドに「w」と書いてみてください。Wで始まる候補が下にずらっとポップアップして表示されます。ここからマウスでどれかを選択すれば、その項目が入力フィールドに書き出されます。

 この入力支援機能では、2つのタグを用意します。1つは入力用の<input type="text">タグで、もう1つはポップアップメニューを組み込むためのタグ(<div>タグなど)です。この機能では、メニュー表示用に用意したタグにメニューが組み込まれ表示されるようになっているのです。

 入力支援機能を提供するのは、Autocompleter.Localというオブジェクトです。これは次のようにしてオブジェクトを作成します。

new Autocompleter.Local( '入力フィールドのID', 'ポップアップメニューを組み込むID',表示リストの配列,{オプション属性});

 入力フィールドと、ポップアップメニュー用の各タグのID、それに候補となるテキストを配列としてまとめたものを引数に指定します。引数を見れば分かるように、これはAjax機能は使いません。サーバ側に仕掛けは必要なく、HTMLページ単体で機能します。

まとめ

 今回は、GUI関係のコンポーネントを中心に紹介をしました。Script.aculo.usには、この他に、さまざまなエフェクトを行う視覚効果機能も多数揃っていますが、それらについてはまた次の機会に紹介したいと思います。

 ここでは、それぞれのコンポーネントの最も基本的な使い方だけに絞って説明をしましたが、それでも「たったこれだけで、高度なGUIが作れる」ということは感じられたのではないでしょうか。JavaScriptを使いこなせばこんなこともできるんだ、ということの一例として、Script.aculo.usは非常に面白い機能を提供してくれます。平凡なWebページに何かちょっとした仕掛けが欲しい……と思ったとき、ぜひScript.aculo.usのことを思い出してみてください。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Script.aculo.usで作成するビジュアルなWebページ連載記事一覧
この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3495 2009/02/20 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー