このデモは、ユーザ入力のプロンプトを表示する、オーバレイツールの使用方法を示しています。 JavaScriptの古い流儀である prompt() コールに精通している必要があります。 それでは、現代の世界に入るともっと革新的なJavaScriptを使用してみましょう。
あなたは、このダイアログ内部にある要素と対話することができます。 閉じるには、それはボタンをクリックするか、ESCキーを使用します。
あなたは、このダイアログ内部にある要素と対話することができます。 閉じるには、それはボタンをクリックするか、ESCキーを使用します。
「モーダル・ダイアログ」は、メインの文書を使用させる前に、 相互の対話をユーザに要求するオーバレイです。 この機能は、このオーバレイツールとタイトに統合されている Expose toolで実現できます。
デフォルトの JavaScriptプロンプトより、主な利点が2つあります:
再び、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>
ここには何も特別なものはありません。 ダイアログと、その中のいくつかの要素のスタイルを設定します:
.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; }
最初に、トリガ要素がダイアログを開くことを可能にします。 jQueryセレクタの .modalInput で要素を選択し、 2つコンフィギュレーション変数を使用してオーバレイを初期化します。 mask 変数は、半透明のマスクを有効にします。その色を "#ebecff" に設定します。closeOnClick 変数を falseに設定することで、 "modal" 機能(ダイアログが閉じられるまで、文書の残りの部分はマスクによって 無効になっているため、オーバレイが開いている間は、ユーザがメイン文書と対話すること ができない)を有効にします。
var triggers = $(".modalInput").overlay({ // マスクは、モーダルダイアログに適した若干の調整 mask: { color: '#ebecff', loadSpeed: 200, opacity: 0.9 }, closeOnClick: false });
ここに、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")); });
ここでは、ダイアログ内の 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(); });