Ext信息提示對話框


  Ext.window.MessageBox是一個工具類,他繼承自Ext.window.Windoe對象,用來生成各種風格的信息提示對話框,其實例對象可以通過Ext.MessageBox或Ext.Msg進行訪問,使用Ext.MessageBox和使用Ext.Msg有相同的效果,而后者提供了更簡短的調用方式。為了描述方便后邊我們將使用Ext.MessageBox代表Ext.window.MessageBox實例對象。

/**
**Ext.MessageBox和Ext.Msg只是引用了Ext.window.MessageBox的實例對象,Ext.Msg.alert方法調用的是Ext.window.MessageBox實例對象的alert方法,
**避免混淆兩者之間的關系 *
*/

  Ext.MessageBox提供的信息提示對話框顯示的文本不僅支持純文本顯示,還支持使用HTML格式文本,采用HTML中的格式化方法進行排版,效果更佳豐富多彩 ,甚至可以在提示信息中增加動態圖標,使提示信息更加生動。

Ext.Msg.alert("提示","<font color=red>支持HTML格式文本</font>")

  標准JS提供的信息提示對話框會對JS程序的運行產生阻塞。Ext.MessageBox是異步的,它的調用並不會停止瀏覽器中代碼的執行,如果希望在信息提示框出現並且用戶做出反饋后才能調用程序,就需要吧相應程序組成一個函數,並且將該函數作為回調函數提供給Ext.MessageBox,再用戶做出反饋后該回調函數將被調用,這樣就可以達到控制程序執行的目的了。

Ext.onReady(function(){
    alert('我會停止程序的執行。');
    Ext.Msg.alert('提示','我不會停止程序的執行。');
})

/**
**執行代碼會看到標准alert顯示,而ExtJs版的alert並沒有同事顯示出來,說明程序的執行在顯示標准alert之后被阻塞了,導致接下來的代碼並沒有執行
**/

Ext.onReady(function(){
    Ext.Msg.alert('提示','我不會停止程序的執行。');
    alert('我會停止程序的執行。');
})

/**
**執行代碼會看到標准的alert與ExtJs的alert同時出現,說明ExtJs的alert是異步執行的,他不會阻塞程序代碼的繼續執行,
**這是他與標准alert最大的區別,會對編寫代碼的方式產生一定的影響
**/

  Ext.MessageBox.alert()

    一個只讀信息提示框,用來代替js標准的alert()方法,有一個確定按鈕,如果為其提供一個回調函數,則該函數將在單擊按鈕后被調用(不包括右上角的退出按鈕),所單擊按鈕的id將被作為唯一的參數傳遞到回調函數中

調用格式:
alert(String title, String msg ,[Function fn],[Object scope])
參數說明:
title: 提示框標題;
msg: 顯示的信息內容;
[Function fn]: (可選) 回調函數;
[Object scope]: (可選) 回調函數的作用域;

示例:
Ext.Message.alert('提示','請單擊我,確認',callBack);
function callBack(id){
    alert('單擊的按鈕ID是:'+id);
}

  Ext.MessageBox.confirm()

    顯示一個確認信息框,用來代替JS標准的confirm()方法,具有兩個按鈕"是"和"否",如果為其提供一個回調函數,則該函數將在單擊按鈕后被調用(不包括右上角的退出按鈕),所單擊按鈕的id將被作為唯一的參數傳遞到回調函數中。

    Ext.MessageBox.confirm的使用方法,與alert類似該確認對話框也是異步執行,不會造成代碼阻塞。

調用格式:
confirm(String title, String msg ,[Function fn],[Object scope])
參數說明:
title: 提示框標題;
msg: 顯示的信息內容;
[Function fn]: (可選) 回調函數;
[Object scope]: (可選) 回調函數的作用域;

示例:
Ext.Message.confirm('提示','請單擊我,確認',callBack);
function callBack(id){
    alert('單擊的按鈕ID是:'+id);
}

  Ext.MessageBox.prompt()

    顯示一個獲取用戶輸入信息的提示框,用來代替JS標准的prompt()方法,具有兩個按鈕"確認"和"取消",並提供文本輸入框接受用戶的輸入,如果為其提供一個回調函數,則該函數將在單擊按鈕后被調用(不包括右上角的退出按鈕),所單擊按鈕的id將被作為唯一的參數傳遞到回調函數中。

調用格式:
prompt(String title, String msg ,[Function fn],[Object scope],[Boolean/Number multiline])
參數說明:
title: 提示框標題;
msg: 顯示的信息內容;
[Function fn]: (可選) 回調函數;
[Object scope]: (可選) 回調函數的作用域;
[Boolean/Number multiline]: 設置false將顯示一個單行文本域,設置為true將以默認高度顯示一個多行文本區。或者以像素為單位直接設置文本域的高度。默認flase
示例:
Ext.Message.prompt('提示','請輸入一些內容看看',callBack,this,true,"我是默認值");
function callBack(id,msg){
    alert('單擊的按鈕ID是:'+id+'/n'+'輸入的內容是:'+msg);
}

  Ext.MessageBox.wait()

    顯示一個自動滾動的進度條提示框,他經常被用在一個耗時的交互操作當中,他不能定義一個時間間隔自動關閉,程序猿有責任在交互操作完成之后去關閉它

調用格式:
wait(String msg ,[String title], [Object config])
參數說明:
msg: 顯示的信息內容;
title: 提示框標題,為可選參數;
[Object config]:用戶配置進度條的配置對象,為可選參數;

示例:
Ext.Message.wait('請等待,操作需要很長時間!','提示',{
    text:"進度條上的文字"
});

  Ext.MessageBox.show()

    基於配置來顯示新的信息提示框或重置一個已存在的信息提示框,前面介紹的3個提示框內部調用的都是這個方法,盡管那些調用的簡單快捷,但是他們並不支持所有的配置項,要簡歷更加個性化、功能更強大的提示框還需要從掌握Ext.MessageBox.show方法做起

    Ext.MessageBox.show方法支持的配置項非常豐富,不但可以配置提示標題、提示信息、回調函數等常見的部分,他還提供了配置按鈕文字及提示圖片圖標的方法,給了我們控制信息提示框的各種可能性,下邊將分別給出這些配置項,和這些配置項共分為3個列表

 

Ext.MessageBox 常用配置項表

配置項 類型 說明
title String 提示框的標題
msg String 顯示的信息內容
width   Number 對話框的寬度,單位px
maxWidth Number 對話框的最大寬度,默認600px
minWidth Number 對話框的最小寬度,默認100px
closable Boolean

false將隱藏右上角的關閉按鈕,默認為true。

如果已設置wait或者progress為true則該配置將被忽略,提示框只能通過程序關閉,不能通過右上角的關閉按鈕關閉

modal Boolean true為窗口模式,false為非模式窗口
fn   Function

回調函數,它將在點擊控制按鈕、關閉按鈕、或者輸入按鈕,離開對話框時被調用

如果已設置wait或者progress為true則該配置將被忽略

buttonId:按鈕id,如ok,yes,no,cancel

text:輸入的文字

opt:傳入show方法的配置對象

buttons Number/Boolean 按鈕組,可選值見buttons表,默認為false,不顯示任何按鈕
progress Boolean true則顯示一個進度條,默認為false,該進度條需要由程序控制滾動
progressText String 進度條上顯示的文字
proxyDrag Boolean true則顯示一個高亮的拖動代理,默認為false
wait Boolean true則顯示一個自動滾動的進度條,默認為false
waitConfig Object 等待進度條的配置對象,再wait為true時有效
prompt Boolean true則顯示一個單行文本域,默認為false
value  String 如果prompt設置為true,則value值將顯示在文本域中
multiline Boolean 如果prompt設置為true,則multiline為true顯示多行文本區,false顯示單行文本域
defaultTxetHeight Number 多行文本區的默認高度,默認值為75px
icon  String 一個樣式文件,他為對話框提供一個背景圖,詳細見icon表        

  

buttons已提供配置對象說明(區分大小寫)

提示框按鈕配置對象 顯示按鈕
Ext.Msg.CANCEL 取消
Ext.Msg.NO
Ext.Msg.OK 確認
Ext.Msg.OKCANCEL 確認、取消
Ext.Msg.YES
Ext.Msg.YESNO 是、否
Ext.Msg.YESNOCANCEL 是、否、取消

 

icon圖標樣式配置

樣式類 說明 效果描述
Ext.Msg.ERROR 錯誤圖標 紅圓 叉子
Ext.Msg.INFO 信息圖標 氣泡 I
Ext.Msg.OUESTION 問題圖標 氣泡 ?
Ext.Msg.WARNING 警告圖標 三角 !
Ext.MessageBox.show({
    title:'提示',
    msg:'我有三個按鈕,和一個多行文本區',
    modal:true,
    prompt:true,
    value:'請輸入',
    fn:callBack,
    buttons:Ext.Msg.YESNOCANCEL,
    icon:Ext.Msg.QUESTION
})
function callBack(id,msg){
    alert('單擊的按鈕ID是:'+id+'\n'+'輸入的內容是:'+msg);
}

    改變默認的按鈕文字

//這種方法會覆蓋所有的提示文字,會對設置后所有的信息提示框上的按鈕文字產生影響,如果要再次改變按鈕文字就需要多次設置
//
OK Ext.MessageBox.msgButtons[0].setText(''按鈕ok); //YES Ext.MessageBox.msgButtons[1].setText('按鈕yes'); //NO Ext.MessageBox.msgButtons[2].setText('按鈕no'); //CANCEL Ext.MessageBox.msgButtons[3].setText('按鈕cancel');

    動態更新提示框內容

var msgBox = Ext.MessageBox.show({
    title:"提示",
    msgL"動態更新的信息文字",
    modal:true,
    buttons:Ext.Msg.OK,
    fn:function(){
        //停止定時任務
        Ext.TaskManager.stop(task);
    }
})
//Ext.TaskManager是一個功能類,用來定時執行程序
//在這里我們使用它來定時觸發提示信息的更新
var task = {
    run:function(){
        msgBox.updateText('會動的時間:'+Ext.util.Format.date(new Date(),'Y-m-d g:i:s A'))
    },
     interval:1000 
}
Ext.TaskManager.start(task);

     更新進度條及提示信息示例

var msgBox = Ext.MessageBox.show({
    title:"提示",
    msg:'動態更新的進度條和信息文字",
    modal:true,
    width:300,
    progress:true
})
var count = 0;    //滾動條被刷新的次數
var percentage = 0; //進度百分比
var progressText = ""; //進度條信息

var task = {
    run : function(){
        count++;
        //計算進度
        precentage = count/10;
        //生產進度條文字
        progressText = "當前完成度:"+percentage*100+"%";
        //更新信息提示對話框
        msgBox.updateProgress(percentage,progressText,
            '當前時間:'+Ext.util.Format.date(new Date(),'Y-m-d g:i:s A');
        )
        //刷新10次后關閉信息提示對話框
        if(count > 10){
            Ext.TaskManager.stop(task);
            msgBox.hide();
        }
    },
    interval:100
}
Ext.TaskManager.start(task);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM