企業情報 │ お問い合わせ │サポート
[ オーバレイの Apple 効果 ] [ メニュー ] [ プログラムでオーバレイを開く]


オーバレイでモーダルダイアログを作成する

このデモは、ユーザ入力のプロンプトを表示する、オーバレイツールの使用方法を示しています。 JavaScriptの古い流儀である prompt() コールに精通している必要があります。 それでは、現代の世界に入るともっと革新的なJavaScriptを使用してみましょう。

スタンドアロン・デモ

「モーダル・ダイアログ」は、メインの文書を使用させる前に、 相互の対話をユーザに要求するオーバレイです。 この機能は、このオーバレイツールとタイトに統合されている Expose toolで実現できます。

デフォルトの JavaScriptプロンプトより、主な利点が2つあります:

  1. ダイアログボックスのルック&フィールを調節できます。
  2. どの種類の質問もできて、複数の入力フィールドを持つことができます。

HTML コード

再び、HTMLコーディングは、基本的なセットアップと違いはありません。 トリガの要素とそれに対応するオーバレイ要素があります。ここで、ボタンにクラス名 "close" を 割り当てることにより、明示的に[閉じる]ボタンを定義したことに注意してください。 これは、自動的に close アクションをそれにバインドします。

<!-- トリガ -->
<p>
  <button class="modalInput" rel="#yesno">Yes or no?</button>
  <button class="modalInput" rel="#prompt">User input</button>
</p>
 
<!-- yes/no ダイアログ -->
<div class="modal" id="yesno">
  <h2>This is a modal dialog</h2>
 
  <p>
    あなたは、このダイアログ内部にある要素と対話することができます。
    閉じるには、それはボタンをクリックするか、ESCキーを使用します。
  </p>
 
  <!-- yes/no ボタン -->
  <p>
    <button class="close"> Yes </button>
    <button class="close"> No </button>
  </p>
</div>
 
<!-- ユーザ入力ダイアログ -->
<div class="modal" id="prompt">
  <h2>This is a modal dialog</h2>
 
  <p>
    あなたは、このダイアログ内部にある要素と対話することができます。
    閉じるには、それはボタンをクリックするか、ESCキーを使用します。
  </p>
 
  <!-- 入力フォーム。enter も押すことができる -->
  <form>
    <input />
    <button type="submit"> OK </button>
    <button type="button" class="close"> Cancel </button>
  </form>
  <br />
 
</div>

CSS コード

ここには何も特別なものはありません。 ダイアログと、その中のいくつかの要素のスタイルを設定します:

  .modal {
    background-color:#fff;
    display:none;
    width:350px;
    padding:15px;
    text-align:left;
    border:2px solid #333;
 
    opacity:0.8;
    -moz-border-radius:6px;
    -webkit-border-radius:6px;
    -moz-box-shadow: 0 0 50px #ccc;
    -webkit-box-shadow: 0 0 50px #ccc;
  }
 
  .modal h2 {
    background:url(/media/img/global/info.png) 0 50% no-repeat;
    margin:0px;
    padding:10px 0 10px 45px;
    border-bottom:1px solid #333;
    font-size:20px;
  }

JavaScript コード

最初に、トリガ要素がダイアログを開くことを可能にします。 jQueryセレクタ.modalInput で要素を選択し、 2つコンフィギュレーション変数を使用してオーバレイを初期化します。 mask 変数は、半透明のマスクを有効にします。その色を "#ebecff" に設定します。closeOnClick 変数を falseに設定することで、 "modal" 機能(ダイアログが閉じられるまで、文書の残りの部分はマスクによって 無効になっているため、オーバレイが開いている間は、ユーザがメイン文書と対話すること ができない)を有効にします。

  var triggers = $(".modalInput").overlay({
 
      // マスクは、モーダルダイアログに適した若干の調整
      mask: {
        color: '#ebecff',
        loadSpeed: 200,
        opacity: 0.9
      },
 
      closeOnClick: false
  });

Yes/No プロンプト

ここに、yes/no プロンプトのコードがあります。両方のボタンにクリックイベントをバインドし、 jQueryの index メソッドを使用して、どボタンがクリックされたかを知ります。 結果が分った後は、単にトリガへ答えを書き込むだけです。もちろん、その結果より多くの有用 なことを行う必要があります。

  var buttons = $("#yesno button").click(function(e) {
 
      // ユーザ入力の取得
      var yes = buttons.index(this) === 0;
 
      // 答えに何かをする
      triggers.eq(0).html("You clicked " + (yes ? "yes" : "no"));
  });

Input プロンプト

ここでは、ダイアログ内の FORM 要素へ、submit イベントハンドラを バインドします。このハンドラは、オーバレイAPIコール close を使用して オーバレイを閉じます。デフォルトのフォーム送信アクションは、 e.preventDefault() を返すことでキャンセルすることができます。

$("#prompt form").submit(function(e) {
 
      // オーバレイを閉じる
      triggers.eq(1).overlay().close();
 
      // ユーザ入力の取得
      var input = $("input", this).val();
 
      // 答えに何かをする
      triggers.eq(1).html(input);
 
      // フォームを送信しない
      return e.preventDefault();
  });

Copyright(c)2005 Your site name All rights reserved. テンプレートby LinkFly