在傳統的WINDOWS EXE程序中,模態對話框經常出現。例如,寫字板程序(WORDPAD.EXE)中的“查看/選項(O)...”菜單被點中后,跳出“選項”對話框,用戶一定要響應該對話框,如果該對話框不關閉,是無法回到主窗口的。這經常被應用于要求用戶輸入多個參數的場合。我們在瀏覽器中也可以簡單地實現該功能。
---- 在IE瀏覽器中,要求用戶輸入可以使用VBScript的INPUTBOX函數、或者J Script的window.prompt方法,但是界面都比較單調,并且只能傳遞一個參數,而用DHTML來實現就靈活多了。
---- 1. 基本語法
---- window對象有一個方法稱為showModalDialog,我們可以在頁面按鈕的onclick中寫如下代碼:
< BUTTON onclick="window.showModalDialog
('dialog.htm')" >Search< /BUTTON >
---- 系統會在新窗口中打開dialog.htm頁面,并且等待用戶響應,如果用戶不響應該頁面,那么主頁面將得不到光標。
---- 在dialog.htm中設置window對象的returnValue屬性,就可以讓主頁面得到返回值。例如,在頁面的確定按鈕的onclick中寫:
window.returnValue = window.
document.all.iptPeopleID.value
---- 將輸入框iptPeopleID的值賦給window對象的returnValue屬性。在主頁面中就可以得到這個值:
var str = showModalDialog("dialog1.htm")
---- 2. 傳遞初始化值
---- 如果要向模態頁面中傳遞初始化值,可以在主頁面中用如下語句:
var cSearchValue=showModalDialog
('dialog.htm', 'ABC')
在dialog.htm中使用window.dialogArguments
屬性可以得到'ABC'。例如:
< SCRIPT FOR=window EVENT=onload LANGUAGE="JScript" >
if (window.dialogArguments != null)
window.document.all.iptPeopleID.value = window.dialogArguments;
< /SCRIPT >
---- 3. 傳遞多個數值
---- 如果要向模態頁面中傳遞多個參數,可以先在主頁面中定義一個對象,
function myDialog() {
var str1;
var str2;
}
---- 顯示模態頁面之前初始化該對象,然后調用showModalDialog方法。
function WelcomeYou(iniStr1,iniStr2) {
myDialog.str1 = iniStr1;
myDialog.str2 =iniStr2 ;
if (showModalDialog("dialog2.htm", myDialog)
==false) //將對象傳入
......
---- 在模態頁面中,可以用這樣的代碼
window.document.all.iptID.value=
window.dialogArguments.str1
來引用數值,或者用這樣的代碼對之賦值
window.dialogArguments.str1 =
window.document.all.iptID.value
---- 完整例程如下:
---- 對于只傳遞一個參數的情況,見:Main1.htm和dialog1.htm。
---- 對于傳遞多個參數的情況,見:Main2.htm和dialog2.htm。
父窗體:
dim xxx '返回值
dim yyy '傳到子窗體的參數
var xxx = ShowModalDialog('xxx.asp','yyy','dialogWidth:100px;DialogHeight=290px;status:no')
子窗體:
dim yyy '從父窗體傳來的參數
dim xxx '傳回父窗體的參數
yyy = window.dialogArguments
xxx = window.returnValue
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/liang4571231/archive/2009/04/29/4135316.aspx