レッスンに戻る

モーダルフォーム

重要性: 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 を持たせたくないからです。

サンドボックスでソリューションを開く。