模態表單
重要性:5
建立一個函式 showPrompt(html, callback)
,顯示一個表單,其中包含訊息 html
、一個輸入欄位和按鈕 確定/取消
。
- 使用者應該在文字欄位中輸入一些內容,然後按下 Enter 或確定按鈕,接著就會呼叫
callback(value)
,並傳入他們輸入的值。 - 否則,如果使用者按下 Esc 或取消,就會呼叫
callback(null)
。
在兩種情況下,都會結束輸入程序並移除表單。
需求
- 表單應該在視窗的中央。
- 表單是模態的。換句話說,在使用者關閉表單之前,無法與頁面的其他部分進行互動。
- 顯示表單時,焦點應該在
<input>
中,供使用者輸入。 - 按鍵 Tab/Shift+Tab 應在表單欄位間移動焦點,不允許它離開到其他頁面元素。
使用範例
showPrompt("Enter something<br>...smart :)", function(value) {
alert(value);
});
iframe 中的範例
附註:原始文件有固定定位的表單 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
。