Modal form
یک function showPrompt(html, callback)
ایجاد کنید که فرمی با پیام html
، یک input field و دکمههای OK/CANCEL
داشته باشد.
- یک کاربر باید چیزی را در tex field تایپ کند و Enter را فشار دهد، آنگاه
callback(value)
با مقداری که وارد شده است فراخوانی میشود. - در غیر این صورت اگر کاربر Esc یا CANCEL را فشار دهد،
callback(null)
فراخوانی میشود.
در هر دو صورت، این فرآیند input را تمام میکند و فرم را پاک میکند.
ملزومات:
- فرم باید در وسط پنجره باشد.
- فرم یک modal است. به عبارت دیگر، تا زمانی که کاربر آن را نبندد، هیچ تعاملی با بقیهی صفحه مجاز نیست.
- وقتی فرم نمایش داده میشود، focus برای کاربر باید درون
<input>
باشد. - کلیدهای Tab/Shift+Tab باید فوکوس را بین form fieldها جابهجا کنند و اجازه ندهند که به عناصر دیگر صفحه برود.
مثال از استفاده:
showPrompt("Enter something<br>...smart :)", function(value) {
alert(value);
});
نسخهای نمایشی در iframe:
پینوشت: source documentای که ارائه شده HTML/CSS برای فرم با fixed positioning را دارد، اما این بر عهدهی شماست که آن را به modal تبدیل کنید.
یک modal window میتواند بااستفاده از یک <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'
میتوانیم از scroll کردن صفحه جلوگیری کنیم.
فرم نباید در <div>
باشد، بلکه باید کنار آن باشد، زیرا نمیخواهیم که opacity
داشته باشد.