モーダルフォーム
重要性: 5
メッセージ html
、入力フィールド、ボタン OK/CANCEL
を持つフォームを表示する関数 showPrompt(html, callback)
を作成してください。
- ユーザーはテキストフィールドに何か入力して Enter または OK ボタンを押すと、
callback(value)
が入力された値で呼び出されます。 - それ以外の場合は、ユーザーが Esc または CANCEL を押した場合、
callback(null)
が呼び出されます。
どちらの場合も入力プロセスが終了し、フォームが削除されます。
要件
- フォームはウィンドウの中央に配置する必要があります。
- フォームは モーダル です。つまり、ユーザーがフォームを閉じない限り、ページの他の部分との対話はできません。
- フォームが表示されると、ユーザーの
<input>
内にフォーカスが移動する必要があります。 - キー Tab/Shift+Tab でフォームフィールド間のフォーカスを移動し、他のページ要素に移動できないようにします。
使用例
showPrompt("Enter something<br>...smart :)", function(value) {
alert(value);
});
iFrame でのデモ
P.S. ソースドキュメントには固定配置のフォーム用の HTML/CSS がありますが、モーダルにするかどうかはあなた次第です。
モーダルウィンドウは、この半透明の <div id="cover-div">
を使用して実装できます。これは次のようにウィンドウ全体を覆います。
#cover-div {
position: fixed;
top: 0;
left: 0;
z-index: 9000;
width: 100%;
height: 100%;
background-color: gray;
opacity: 0.3;
}
<div>
はすべてをカバーするため、その下のページをクリックすることはできません。
また、body.style.overflowY='hidden'
を設定してページのスクロールを防ぐことができます。
フォームは <div>
に含めるのではなく、その隣に含める必要があります。これは opacity
を持たせたくないからです。