小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JQuery.Boxy

 Ethan的博客 2011-12-19

《彈出層之1:JQuery.Boxy (一)》中講到了JQuery.Boxy的基本用法,本次講下手動創(chuàng)建實例,new一個boxy對象是很容易的,傳遞一些參數(shù)對象就能滿足不同的需求了。


4.1、手動創(chuàng)建實例

<script type="text/javascript">
        $(function() {
            $("#a1").click(function() {
        //實例化一個Boxy對象
                var box1 = new Boxy("<h3>這個參數(shù)是顯示的內(nèi)容</h3>" //顯示內(nèi)容
        ,
                {
                    title: "標(biāo)題", //對話框標(biāo)題
                    modal: false//是否為模式窗口
                    afterHide: function(e) { alert("dialog hide"); }, //隱藏時的回調(diào)函數(shù)
                    afterShow: function(e) { alert("dialog show"); }, //顯示時的回調(diào)函數(shù)
                    closeText: "X",   //關(guān)閉功能按鈕的標(biāo)題文字
                    draggable: true //是否可以拖動
                });
                box1.resize(300, 100);  //設(shè)置對話框的大小
            });

        });
    </script>
<p>
        <href="#" id="a1">4.1、手動創(chuàng)建一個實例</a>
</p>

 

測試發(fā)現(xiàn)modal為true為模式窗口,也就是背景被遮罩時就算設(shè)置 draggable: true拖動也是無效的。
 
5.1、常用對話框—提問框
            //提問框
            $("#a2").click(function() {
                Boxy.ask("鳳姐最漂亮的部分是?",  //問題
                ["臉皮", "小嘴巴", "知識淵博"], //可選項按鈕
                function(val) { alert(val) }, //回調(diào)方法
                {title:"測試",modal:false}   //boxy屬性設(shè)置
                );
            });
    <p>
        <href="#" id="a2">5.1、彈出提問框</a>
    </p>
Boxy.ask(question, answers, callback, options)方法的4個參數(shù)question表示提問;answers提問選擇項,一般為數(shù)組;callback為回調(diào)方法;options是boxy彈出框的的屬性對象,見4.1。
 
5.2、常用對話框—警告框
            //警告框
            $("#a3").click(function() {
                Boxy.alert("這是警告信息",   //提示信息
                function(val) { alert(val); },   //回調(diào)方法
                {title:"提示"});  //boxy屬性
            });
<p>
        <href="#" id="a3">5.2、警告框</a>
    </p>
 
Boxy.alert(message, callback, options)方法的3個參數(shù)message表示警告信息;callback為回調(diào)方法;options是boxy彈出框的的屬性對象,見4.1。
 
5.3、常用對話框—確認(rèn)框
            //確認(rèn)框
            $("#a4").click(function() {
                Boxy.confirm("你確認(rèn)要看鳳姐的照片嗎?", //確認(rèn)提示信息
                function() { alert("上當(dāng)了") },  //點擊確認(rèn)后的回調(diào)信息
                { title: "測試", modal: false });   //boxy屬性設(shè)置
            });
<p>
        <href="#" id="a4">5.3、確認(rèn)框</a>
    </p>
Boxy.confirm(message, callback, options)方法的3個參數(shù)message表示確認(rèn)提示信息;callback為回調(diào)方法,只有點擊確認(rèn)時才會執(zhí)行;options是boxy彈出框的的屬性對象,見4.1。
 
6、API參數(shù)

方法:
Boxy.load(url, options)
以一個URL加載內(nèi)容并以Boxy對話框的形式展現(xiàn)。支持以下的一些選項參數(shù):
類型 - HTTP方法,默認(rèn)為GET
緩存 - 如果是true,緩存內(nèi)容連續(xù)通話。相當(dāng)于緩存選項傳遞到j(luò)Query的Ajax方法。默認(rèn):false。
過濾 - jQuery的表達(dá)式,用于過濾遠(yuǎn)程內(nèi)容。
(任何其他指定的選項將被傳遞到boxy的構(gòu)造函數(shù)中)

Boxy.get(element)
返回包含元素的實例,例如:<a href="#" onclick="Boxy.get(this).hide();">關(guān)閉對話框</a>

Boxy.ask(question, answers, callback, options)
顯示模式,即非可關(guān)閉對話框,允許用戶選擇選項。問題是要顯示給用戶的信息。答案是一個數(shù)組或一切可能的回答的數(shù)列?;卣{(diào)函數(shù)將收到選定的回答,這是否是需要的值或相應(yīng)的密鑰要根據(jù)一個數(shù)組或答案數(shù)列是否已經(jīng)提供了。options是一種額外的可選設(shè)置選項傳遞給對話框的構(gòu)造函數(shù)。

Boxy.alert(message, callback, options)
顯示模式,非可關(guān)閉對話框顯示消息給用戶。
注意:此方法并不是為了取代瀏覽器本地window.alert()函數(shù)提供,因為它沒有能力阻止程序執(zhí)行,在對話框是可見的時候。

Boxy.confirm(message, callback, options)
顯示模式,非可關(guān)閉對話框顯示的含有確定和取消按鈕的消息?;卣{(diào)只會在用戶選擇了“確定”時被調(diào)用。
注意:此方法并不是為了取代瀏覽器提供的本地window.confirm()函數(shù),因為它沒有能力在對話框可見時阻止程序執(zhí)行的。

Boxy.linkedTo(ele)
返回已通過執(zhí)行器構(gòu)造函數(shù)選項連接DOM元素的boxy實例。

Boxy.isModalVisible()
返回true如果任何模式對話框是當(dāng)前可見的,否則返回false。

new Boxy(element, options)
構(gòu)造函數(shù);創(chuàng)建一個新的boxy對話框。element是對話框的內(nèi)容;任何有效的參數(shù),jQuery的$()函數(shù)在這里也是有效的。options是一個配置選項的散列,見下面詳細(xì)的資料。

estimateSize()
當(dāng)對話框不可見的時候估計其大小。如果當(dāng)前對話框可見,不要使用此方法,使用getSize()代替。

getSize()
以數(shù)組的形式[width, height]返回對話框的大小。

getContentSize()
返回對話框內(nèi)容區(qū)域的大小。默認(rèn)情況下,指在對話框框架里的一切,不包括標(biāo)題欄。

getPosition()
以[x,y]數(shù)組形式返回最頂層對話框的左上角坐標(biāo)。

getCenter()
以[x,y]數(shù)組形式返回最頂層對話框的中心點的坐標(biāo)。

getInner()
返回一個jQuery對象包裝對話框的內(nèi)部區(qū)域-框架內(nèi)包括標(biāo)題欄一切。

getContent()
返回一個jQuery對象包裝對話框的內(nèi)容區(qū)域-框架內(nèi)的一切,不包括標(biāo)題欄。

setContent(newContent)
設(shè)置對話框中的內(nèi)容,任何對$()有效的參數(shù)也對設(shè)置的新內(nèi)容有效。可鏈接。

moveTo(x,y)
移動對話框到左上角為(x,y)的位置,可鏈接。

centerAt(x,y)
把對話框移動到中心坐標(biāo)為(x,y)的位置上。

center(axis)
移動對話框,使其在視野的中央??蛇x參數(shù)axis可以是"x","y"中的任意一個中心軸??涉溄?。

resize(w,h,after)
重新調(diào)整對話框的高寬到[w,h],完成后執(zhí)行回調(diào)函數(shù),回調(diào)函數(shù)將接受Boxy實例作為參數(shù)??涉溄?。

tween(w,h,after)
動畫補間對話框高寬到[w,h],完成后執(zhí)行回調(diào)函數(shù),回調(diào)函數(shù)將接受Boxy實例作為參數(shù)。可鏈接。

isVisible()
如果當(dāng)前對話框可見,則返回true,否則返回false。

show()
顯示對話框,可鏈接。

hide(after)
隱藏對話框,after為可選回調(diào)函數(shù),完成后執(zhí)行。可鏈接。

toggle()
觸發(fā)對話框的顯隱屬性。可鏈接。

hideAndUnload(after)
在隱藏后立即執(zhí)行卸載。在卸載之前執(zhí)行after回調(diào)函數(shù)??涉溄印?/p>

unload()
從DOM中刪除對話框,切斷其與執(zhí)行機(jī)構(gòu)的聯(lián)系,如果有的話。一旦出現(xiàn)一個對話框已被卸載它的任何進(jìn)一步行動都是未定義的。

toTop()
將當(dāng)前對話框移動到其他所有對話框的上部??涉溄?。

getTitle()
以HTML的形式返回對話框的標(biāo)題。

setTitle(t)
設(shè)置對話框的標(biāo)題為t,可鏈接。


屬性:

 

CSS選擇器
.boxy-wrapper .title-bar
div包裝的自動生成的標(biāo)題欄

.boxy-wrapper .title-bar h2
標(biāo)題欄的內(nèi)容

.boxy-wrapper .title-bar.dragging
拖拽時候的標(biāo)題欄

.boxy-wrapper .title-bar .close
默認(rèn)的關(guān)閉對話框的執(zhí)行器

.boxy-inner
內(nèi)部區(qū)域,包括標(biāo)題欄

.boxy-content
內(nèi)部區(qū)域,不包括標(biāo)題欄。這個class類將被自動添加到傳遞給Boxy的構(gòu)造函數(shù)的任何元素。

.boxy-wrapper .question
通過Boxy.ask()創(chuàng)建的,包含問題文字

.boxy-wrapper .answers
通過Boxy.ask()創(chuàng)建的,包含應(yīng)答的按鈕

.close
這一class類的任何內(nèi)容的單擊事件將關(guān)聯(lián)到關(guān)閉對話框上。

 

選擇器的外框圓角效果是使用png圖片實現(xiàn)的,如果想更改透明程度,可以使用ps修改圖片;如果不考慮IE6的話,可以使用另一種常用的圓角方法(不用圖片只用css樣式)。

 

官網(wǎng):http:///projects/jquery/boxy/
譯文:http://www./wordpress/?p=318

 

本文示例

posted @ 2011-10-05 09:48 張果 閱讀(217) 評論(0) 編輯

Boxy是一個基于JQuery的彈出層插件,它有相對漂亮的外觀,功能齊全,支持iframe,支持模式窗口但相對于同樣的彈出層插件BlockUI它明顯笨重,但使用不那么方便。

1、下載并修改插件

可以在官網(wǎng)上下載到最新版(http://plugins./files/boxy-0.1.4.zip),到我寫這些文字的時候最新版為0.1.4版,下載解壓后有1個主要的js文件:jquery.boxy.js;1個css文件;還有4個圖片用于構(gòu)成彈出層的4個圓角。將文件引入系統(tǒng)中,修改boxy.css,將下面的圖片路徑修改為項目中實際的位置,如果設(shè)置不對會引起圖片失效,那時就難看了。

 

/* 將此處的圖片修改為相對于css文件的圖片文件的路徑 */
    .boxy-wrapper .top-left 
{ background: url('../images/boxy-nw.png'); }
    .boxy-wrapper .top-right 
{ background: url('../images/boxy-ne.png'); }
    .boxy-wrapper .bottom-right 
{ background: url('../images/boxy-se.png'); }
    .boxy-wrapper .bottom-left 
{ background: url('../images/boxy-sw.png'); }

    
/* 注意:下面的路徑必須使用絕對路徑或url的形式 */
    
/*絕對路徑以‘/’開始表示域名,使用時要注意虛擬目錄,沒有可以省略,/域名/圖片在站點中的路徑*/
    
/*url則是指http://www./xxx.png的形式出現(xiàn)*/
    .boxy-wrapper .top-left 
{ #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-nw.png'); }
    .boxy-wrapper .top-right 
{ #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-ne.png'); }
    .boxy-wrapper .bottom-right 
{ #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-se.png'); }
    .boxy-wrapper .bottom-left 
{ #background: none; #filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/boxy-sw.png'); }

2、將插件引用到頁面中

    <script src="http://www.cnblogs.com/Contents/JS/jquery-1.5.js" type="text/javascript"></script>
    <link href="boxy.css" rel="stylesheet" type="text/css" />
    <script src="jquery.boxy.js" type="text/javascript"></script>

3、給匹配的元素綁定boxy行為

    <script type="text/javascript">
        $(function() {
            $(".boxy").boxy();
        });
        </script>
<href="#m1" class="boxy" title="這是超鏈接的標(biāo)題">3.1、點我就會彈出一個對話框</a>
    <div id="m1" style="display: none"> 我是超鏈接彈出來的</div>

 

a標(biāo)簽中的 title如果不設(shè)置,彈出的框?qū)]有標(biāo)題且不能拖動;href后面的錨記m1為對應(yīng)的要彈出的元素id;顯示的元素默認(rèn)如果設(shè)置為none時彈出將設(shè)置顯示。
 
 3.2、彈出顯示指定的頁面內(nèi)容
 
    <script type="text/javascript">
        $(function() {
            $(".boxy").boxy();
        });
    </script>
<href="../default.aspx" class="boxy" title="提示">3.2、加載一個文檔,顯示為提示信息</a>

 

href超鏈接到要彈出顯示內(nèi)容的文件。

 3.3、提交時以確認(rèn)框形式彈出

    <script type="text/javascript">
        $(function() {
            $(".boxy").boxy();
        });
    </script>
<form class="boxy"  action="Default.html" method="post">
        <input id="Submit1"  type="submit" value="3.3、提交時顯示彈出層"/>
   </form> 

 

 

說明:
1、boxy對話框自動計算出您的內(nèi)容區(qū)域內(nèi)本身的大小和位置,沒有必要明確規(guī)定了包裝集的尺寸;
2、上面的簡單使用方法中其實是在間接指定boxy中message屬性的內(nèi)容,該屬性為彈出框的顯示信息,默認(rèn)為:“請確認(rèn):”
3、每個匹配錨title屬性將被用來作為其相應(yīng)的對話框的標(biāo)題
4、message的內(nèi)容的display屬性都將設(shè)置為block(顯示為塊)

 

下載本文示例

posted @ 2011-10-05 09:27 張果 閱讀(642) 評論(1) 編輯

JQuery.BlockUI是眾多JQuery插件彈出層中的一個,它小巧(原版16k,壓縮后10左右),容易使用, 功能齊全,支持Iframe,支持Modal,可定制性高也意味他默認(rèn)謙虛的外表。

jQuery的BlockUI插件可以讓你在使用AJAX時模擬同步行為,鎖定瀏覽器(模式窗口)。當(dāng)被激活時,它會防止用戶活動的頁面(或頁面的一部分),直到它被禁用。 BlockUI添加元素的DOM,給它的外觀和阻止用戶交互行為。

1、首先引入插件

    <script src="jquery.min.js" type="text/javascript"></script>
    <script src="JQuery.BlockUI.min.2.39.js" type="text/javascript"></script>

2、調(diào)用

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www./1999/xhtml">
<head><title></title>
    <script src="jquery.min.js" type="text/javascript"></script>
    <script src="JQuery.BlockUI.min.2.39.js" type="text/javascript"></script>
    <script type="text/javascript">

        $(
function() {
            $(
'#Button1').click(function
() {
                
//阻止頁面的用戶的活動

                $.blockUI();
            });
            $(
'#Button2').click(function
() {
                
//自定義信息內(nèi)容

                $.blockUI({ message: '<h3><img src="busy.gif" /> Just a moment...</h3>' });
            });
            $(
'#Button3').click(function
() {
                
//自定義樣式

                $.blockUI({ css: { backgroundColor: '#f00', color: '#fff'} });
            });
            $(
'#Button4').click(function
() {
                
//定義彈出的信息為頁面的某一個元素

                $.blockUI({ message: $('#domMessage') });
            });
            $(
'#btnClose').click(function
() {
                
//關(guān)閉彈出層

                $.unblockUI();
            });
            $(
'#Button5').click(function
() {
                
//設(shè)置淡入,淡出,自動關(guān)閉時間

                $.blockUI({ fadeIn: 700, fadeOut: 700, timeout: 2000 });
            });
            
//簡單的氣泡提示

            $.growlUI('提示''刪除成功!');
        });
    
</script>
</head>
<body>
    <ol>
        <li>阻止頁面的用戶的活動,不會自動消失,請刷新: $.blockUI();
            <input id="Button1" type="button" value="測試" />
        </li>
        <li>自定義消息:
            <input id="Button2" type="button" value="測試" />
        </li>
        <li>自定義樣式:
            <input id="Button3" type="button" value="測試" />
        </li>
        <li>彈出指定的元素,并關(guān)閉彈出層(該層可以為隱藏):
            <input id="Button4" type="button" value="測試" />
        </li>
        <li>設(shè)置淡入,淡出,自動關(guān)閉時間:
            <input id="Button5" type="button" value="測試" />
        </li>
    </ol>
    <div id="domMessage" style
="text-align: center; width: 200px; height: 50px; border;
        1px solid #9cf; padding: 25px; display: none;"
>
        <h3>
            Message</h3>
        <input id="btnClose" type="button" value="關(guān)閉" />
    </div>
</body>
</html>

 

3、樣式修改

jQuery blockUI 提供的默認(rèn)樣式過于樸素, 可以在每一次調(diào)用blockUI() 函數(shù)時進(jìn)行修改. 也一次直接修改庫文件 jquery.blockUI.js, 修改$.blockUI.defaults 對象相關(guān)的代碼:

 

顯示源碼
// 重寫defaults對象中的屬性
    $.blockUI.defaults = { 
    
    //彈出的信息
    message:  '<h1>Please wait...</h1>', 
 
    //定義消息框樣式
    // $.blockUI.defaults.css = {}; 

    //默認(rèn)定義消息框樣式Css樣式
    css: { 
        padding:        0, 
        margin:         0, 
        width:          '30%', 
        top:            '40%', 
        left:           '35%', 
        textAlign:      'center', 
        color:          '#000', 
        border:         '3px solid #aaa', 
        backgroundColor:'#fff', 
        cursor:         'wait' 
    }, 
 
    // 遮罩樣式
    overlayCSS:  { 
        backgroundColor: '#000', //顏色
        opacity:         0.6 //透明度
    }, 
 
    // 使用$.growlUI完成自動氣泡時的樣式 
    growlCSS: { 
        width:    '350px', 
        top:      '10px', 
        left:     '', 
        right:    '10px', 
        border:   'none', 
        padding:  '5px', 
        opacity:   0.6, 
        cursor:    null
        color:    '#fff', 
        backgroundColor: '#000', 
        '-webkit-border-radius': '10px',  //貌似是圓角
        '-moz-border-radius':    '10px' 
    }, 
 
    // 是否在非IE瀏覽器中使IFrame獲得焦點,未驗證的
    forceIframe: false
 
    // 遮罩層的Z-Index值,越大越在上面
    baseZ: 1000, 
 
    // 是否居中
    centerX: true
    centerY: true
 
    //是否允許拉大 
    //短的網(wǎng)頁上。禁用如果你想防止車身高度的變化
    allowBodyStretch: true
 
   //遮罩時是否禁用鍵盤和鼠標(biāo)事件
    bindEvents: true
 
    // be default blockUI will supress tab navigation from leaving blocking content 
    // (if bindEvents is true) 
    //遮罩內(nèi)容的Tab導(dǎo)航是否可用
    constrainTabKey: true
 
    //淡入時間
    fadeIn:  200, 
 
       //淡出時間
    fadeOut:  400, 
 
    // time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock 
    //自動淡出時間
    timeout: 0, 
 
    //disable if you don't want to show the overlay 
    //是否自動遮罩
    showOverlay: true
 
    // if true, focus will be placed in the first available input field when 
    // page blocking 
    //自動獲得焦點
    focusInput: true
 
    //抑制FF/Linux的疊加樣式的使用(由于具有不透明的性能問題)
    applyPlatformOpacityRules:true,
 
    //調(diào)用解封已完成時回調(diào)方法;
    // onUnblock(element, options) 
    onUnblock: null

 

 總結(jié):上面的文字個人認(rèn)為寫的比較爛,但基本的使用沒有問題,詳盡的支持是官網(wǎng):http://www./jquery/block/,這個站還有一些其它插件也值得看看。

 

本文示例下載

posted @ 2011-10-01 23:01 張果 閱讀(478) 評論(0) 編輯

tipswindow是一個很一般的JQuery彈出層插件,但使用簡單,有相對漂亮的外觀,代碼比較通俗。下面介紹使用方法:

1、首先引入該插件相關(guān)文件,分別是樣式,JQuery庫,該插件

    <link href="tipswindown.css" rel="stylesheet" type="text/css" />
    <script src="../Contents/JS/jquery-1.5.js" type="text/javascript"></script>
    <script src="tipswindown.js" type="text/javascript"></script>

2、修改tipswindow.css文件中圖片的路徑,默認(rèn)與css文件在同一個目錄下。
3、編寫代碼,如在圖片上設(shè)置單擊事件后放大顯示圖片:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www./1999/xhtml">
<head>
    <link href="tipswindown.css" rel="stylesheet" type="text/css" />
    <script src="../Contents/JS/jquery-1.5.js" type="text/javascript"></script>
    <script src="tipswindown.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(
function() {
            $(
"#imgTest").click(function() {
                tipsWindown(
"標(biāo)題:風(fēng)景""img:" + this.src, "640""480""true""""true""img");
            });
            
/*
            function tipsWindown(title, content, width, height, drag, time, showbg, cssName) 
            title: 窗口標(biāo)題
            content:  內(nèi)容(可選內(nèi)容為){ text | id | img | url | iframe }
            width: 內(nèi)容寬度
            height: 內(nèi)容高度
            drag:  是否可以拖動(ture為是,false為否)
            time: 自動關(guān)閉等待的時間,為空是則不自動關(guān)閉
            showbg: [可選參數(shù)]設(shè)置是否顯示遮罩層(0為不顯示,1為顯示)
            cssName:  [可選參數(shù)]附加class名稱
            
*/
        });
    
</script>
</head>
<body>
    <img src="../Contents/Images/wallpager/Autumn_A_1.jpg" width="400" height="300" id="imgTest" />
</body>
</html>

 

其它用法網(wǎng)友總結(jié)如下:
1.彈出文本信息提示:
tipsWindown("提示","text:提示信息內(nèi)容","250","150","true","","true","msg")

2.彈出頁面中的某個ID的html:
tipsWindown("標(biāo)題","id:testID","300","200","true","","true","id")

3.彈出圖片:
tipsWindown("圖片","img:圖片路徑","250","150","true","","true","img")

4.get加載一個.html文件(也可以是.php/.asp?id=4之類的):
tipsWindown("標(biāo)題","url:get?test.html","250","150","true","","true","text");

5.加載一個頁面到框架顯示:
tipsWindown("標(biāo)題","iframe:http://","900","580","true","","true","leotheme");

6.彈出一個不能拖動且沒有遮罩背景的文本信息層:
tipsWindown("提示","text:提示信息內(nèi)容","250","150","false","","false","msg")

7.彈出一個不能拖動,三秒鐘自動關(guān)閉的層:
tipsWindown("提示","text:提示信息內(nèi)容","250","150","false","3000","true","msg")

 

1、下載本文示例
2、下載官方最新示例與框架(推薦)

官網(wǎng):http:///javascript/jquery-plugins-tipswindow-2-0.html

posted @ 2011-09-27 21:31 張果 閱讀(340) 評論(0) 編輯

jquery.validate是基于jquery的一個B/S客戶端驗證框架,借助jquery的優(yōu)勢,我們可以迅速驗證一些常見的輸入,大大提高了開發(fā)效率,下面是本人做的學(xué)習(xí)筆記:

 

JQuery擴(kuò)展插件Validate—1基本使用方法
JQuery擴(kuò)展插件Validate—2通過參數(shù)設(shè)置驗證規(guī)則
JQuery擴(kuò)展插件Validate—3通過參數(shù)設(shè)置錯誤信息
JQuery擴(kuò)展插件Validate—4設(shè)置錯誤提示的樣式
JQuery擴(kuò)展插件Validate—5添加自定義驗證方法
JQuery擴(kuò)展插件Validate—6radio、checkbox、select的驗證

 

示例源碼下載

 

注意:validate只是使驗證變得方便,簡單,本質(zhì)還是使用js,不論多么強大的js驗證,當(dāng)用戶把js禁用或使用機(jī)器直接發(fā)起請求時都不能確保數(shù)據(jù)的完整性,所有不要把希望寄托在客戶端驗證,個人認(rèn)為每一個客戶端驗證都要服務(wù)器進(jìn)行再次驗證。

posted @ 2011-09-05 18:06 張果 閱讀(1574) 評論(3) 編輯

radio、checkbox、select的驗證其實方法與前面提到?jīng)]有太大的區(qū)別,但問題是錯誤信息會顯示在同一組的第一個元素后面,效果如下所示:


解決這個問題的辦法是將錯誤信息指定到一個特定的位置,validate()方法的參數(shù)中可以進(jìn)行自定義,示例代碼如下:

View Code
<script type="text/javascript">
        jQuery.validator.addMethod(
"regex",    //addMethod第1個參數(shù):方法名稱
        function(value, element, params) {     //addMethod第2個參數(shù):驗證方法,
                                //驗證方法參數(shù)(被驗證元素的值,被驗證元素,參數(shù))
            var exp = new RegExp(params);      //實例化正則對象,參數(shù)為用戶傳入的正則表達(dá)式
            return exp.test(value);                    //測試是否匹配
        },
        
"格式錯誤");

        $(
function() {
            $(
"#signupForm").validate(

            {
            rules: {
                txtPassword1: 
"required",  //密碼1必填

                txtPassword2: {    
//密碼2的描述多于1項使用對象類型
                    required: true,  //必填,這里可以是一個匿名方法
                    equalTo: "#txtPassword1",  //必須與密碼1相等
                    rangelength: [510],    //長度5-10之間
                    regex: "^\\w+$"          //使用自定義的驗證規(guī)則
                },

                txtEmail: 
"email",   //電子郵箱必須合法
                sex: "required"
            },
            messages: {  
//對應(yīng)上面的錯誤信息
                txtPassword1: "您必須填寫",

                txtPassword2: {
                    required: 
"您必須填寫",
                    equalTo: 
"密碼不一致",
                    rangelength: 
"長度必須介于{0} 和 {1} 之間的字符串",
                    regex: 
"密碼只能是數(shù)字、字母與下劃線"
                }
            },
      
            //在上例中新增的部分
            errorPlacement: 
function(error, element) { //指定錯誤信息位置
            if (element.is(':radio'|| element.is(':checkbox')) {  //如果是radio或checkbox
                    var eid = element.attr('name');  //獲取元素的name屬性
                    error.appendTo(element.parent());    //將錯誤信息添加當(dāng)前元素的父結(jié)點后面
                } else {
                    error.insertAfter(element); 
                }
            },

            debug: 
false,  //如果修改為true則表單不會提交
            submitHandler: function() {
                alert(
"開始提交了");
            }
        });
    });
    
</script>
        <p>
            
<label for="sex">
                性別
</label>
            
<input type="radio" id="rdoFemale" name="sex" />
            
<input type="radio" id="rdoMale" name="sex" />
        
</p>

運行結(jié)果如下:

此外:如果在參數(shù)中加上debug:true則只用于調(diào)試表單不會提交到服務(wù)器; submitHandler: function() {}將會在表單提交到服務(wù)器前執(zhí)行一些操作;用remote可以進(jìn)行Ajax驗證,好像有個小bug;在使用ASP.NET與validate組合使用時會有一些問題可以參考網(wǎng)的博文。 

 

1、在ASP.NET中按鈕都會解析成submit所有都會觸發(fā)驗證,如果想讓某個按鈕不觸發(fā)驗證可以加上這個樣式:class="cancel"

 

源碼下載

posted @ 2011-09-05 17:35 張果 閱讀(297) 評論(0) 編輯
從前面的示例中不難看出validate中自帶的驗證方法足以滿足一般的要求,對于特別的要求可以使用addMethod(name,method,message)添加自定義的驗證規(guī)則,下面的示例中添加了一個用于正則表達(dá)式驗證的擴(kuò)展驗證的方法,示例如下:
<script type="text/javascript">
        jQuery.validator.addMethod(
"regex",  //addMethod第1個參數(shù):方法名稱
        function(value, element, params) {     //addMethod第2個參數(shù):驗證方法,參數(shù)(被驗證元素的值,被驗證元素,參數(shù))
            var exp = new RegExp(params);     //實例化正則對象,參數(shù)為傳入的正則表達(dá)式
            return exp.test(value);                    //測試是否匹配
        },
        
"格式錯誤");    //addMethod第3個參數(shù):默認(rèn)錯誤信息
        $(function() {
            $(
"#signupForm").validate(

            {
            rules: {
                txtPassword1: 
"required",  //密碼1必填

                txtPassword2: {    
//密碼2的描述多于1項使用對象類型
                    required: true,  //必填,這里可以是一個匿名方法
                    equalTo: "#txtPassword1",  //必須與密碼1相等
                    rangelength: [510],    //長度5-10之間
                    regex: "^\\w+$"          //使用自定義的驗證規(guī)則,在上例中新增的部分
                },

                txtEmail: 
"email"   //電子郵箱必須合法
            },
            messages: {
                txtPassword1: 
"您必須填寫",

                txtPassword2: {
                    required: 
"您必須填寫",
                    equalTo: 
"密碼不一致",
                    rangelength: 
"長度必須介于{0} 和 {1} 之間的字符串",
                    regex: 
"密碼只能是數(shù)字、字母與下劃線"
                }
            },
            debug: 
false,  //如果修改為true則表單不會提交
            submitHandler: function() {
                alert(
"開始提交了");
            }
        });
    });
    
</script>

 

運行結(jié)果:

 

注意,如果參數(shù)有多個可以使用數(shù)組,如regex:[1,3,5],方法中可以使用下標(biāo)訪問:params[0]

 

網(wǎng)友提供的一些擴(kuò)展驗證方法:
// 手機(jī)號碼驗證
jQuery.validator.addMethod("mobile", function(value, element) {
    var length = value.length;
    var mobile =  /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/
    return this.optional(element) || (length == 11 && mobile.test(value));
}, "手機(jī)號碼格式錯誤");  

// 電話號碼驗證  
jQuery.validator.addMethod("phone", function(value, element) {
    var tel = /^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$/;
    return this.optional(element) || (tel.test(value));
}, "電話號碼格式錯誤");

// 郵政編碼驗證  
jQuery.validator.addMethod("zipCode", function(value, element) {
    var tel = /^[0-9]{6}$/;
    return this.optional(element) || (tel.test(value));
}, "郵政編碼格式錯誤");

// QQ號碼驗證  
jQuery.validator.addMethod("qq", function(value, element) {
    var tel = /^[1-9]\d{4,9}$/;
    return this.optional(element) || (tel.test(value));
}, "qq號碼格式錯誤");

// IP地址驗證
jQuery.validator.addMethod("ip", function(value, element) {
    var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
    return this.optional(element) || (ip.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256));
}, "Ip地址格式錯誤");

// 字母和數(shù)字的驗證
jQuery.validator.addMethod("chrnum", function(value, element) {
    var chrnum = /^([a-zA-Z0-9]+)$/;
    return this.optional(element) || (chrnum.test(value));
}, "只能輸入數(shù)字和字母(字符A-Z, a-z, 0-9)");

// 中文的驗證
jQuery.validator.addMethod("chinese", function(value, element) {
    var chinese = /^[\u4e00-\u9fa5]+$/;
    return this.optional(element) || (chinese.test(value));
}, "只能輸入中文");

// 下拉框驗證
$.validator.addMethod("selectNone", function(value, element) {
    return value == "請選擇";
}, "必須選擇一項");

// 字節(jié)長度驗證
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
    var length = value.length;
    for (var i = 0; i < value.length; i++) {
        if (value.charCodeAt(i) > 127) {
            length++;
        }
    }
    return this.optional(element) || (length >= param[0] && length <= param[1]);
}, $.validator.format("請確保輸入的值在{0}-{1}個字節(jié)之間(一個中文字算2個字節(jié))"));

源碼下載

posted @ 2011-09-05 17:31 張果 閱讀(275) 評論(0) 編輯

我們先來使用firebug查看在前面的示例中JS產(chǎn)生的html錯誤提示:

 

從圖中我們發(fā)現(xiàn)錯誤信息是被放在了一個label標(biāo)簽中,且有一個類樣式error,只要為signupform下面的
label標(biāo)簽中的error定css樣式,應(yīng)該就可以修改顯示結(jié)果了,添加的css代碼如下:
<style type="text/css">
        *
        
{
            font-size
: 14px;
        
}
        #signupForm label.error
        
{
            color
:Red;
            font-size
:13px;
            margin-left
:5px;
            padding-left
:16px;
            background
:url("error.png") left no-repeat;
        
}
</style>

運行時顯示結(jié)果:
posted @ 2011-09-05 17:19 張果 閱讀(220) 評論(0) 編輯
最終顯示在頁面上的錯誤分為兩種:第一種是默認(rèn)錯誤信息,該信息已經(jīng)被定義在插件中了,可以手動修改。
第二種是通過參數(shù)指定的錯誤信息,如果沒有指定則會使用默認(rèn)的錯誤信息。將上個示例的js修改如下:
顯示源碼 
<script type="text/javascript">
        $(
function() {
            $(
"#signupForm").validate(

            
//在上例中新增的部分
            {
            rules: {
                txtPassword1: 
"required",  //密碼1必填

                txtPassword2: {    
//密碼2的描述多于1項使用對象類型
                    required: true,  //必填,這里可以是一個匿名方法
                    equalTo: "#txtPassword1",  //必須與密碼1相等
                    rangelength: [510]    //長度5-10之間
                },

                txtEmail: 
"email"   //電子郵箱必須合法
            },
            messages: {
                txtPassword1: 
"您必須填寫",

                txtPassword2: {
                    required: 
"您必須填寫",
                    equalTo: 
"密碼不一致",
                    rangelength: 
"長度必須介于{0} 和 {1} 之間的字符串"
                }
            }

        });
    });
</script>

 

html與前面的示例相同
在上一個示例的基礎(chǔ)上添加了一個messages項,為其指定了一個對象類型的值,與rules基本對應(yīng),特意沒有指定email的錯誤信息,運行結(jié)果如下:

源碼下載

 

posted @ 2011-09-05 17:13 張果 閱讀(187) 評論(0) 編輯
在前面示例中使用的的方法簡單方便,但沒有完全將js與頁面結(jié)構(gòu)完全分離,也就是說js依賴了class,下面通過validate()方法的參數(shù)設(shè)置驗證規(guī)則將js與頁面結(jié)構(gòu)完全分離,代碼如下:
顯示源碼
<script type="text/javascript">
        $(
function() {
            $(
"#signupForm").validate(
            
            
//在上例中新增的部分
            {
                rules: {
                    txtPassword1: 
"required",  //密碼1必填

                    txtPassword2: {    
//密碼2的描述多于1項使用對象類型
                        required: true,  //必填,這里可以是一個匿名方法
                        equalTo: "#txtPassword1",  //必須與密碼1相等
                        rangelength: [510]    //長度5-10之間
                    },

                    txtEmail: 
"email"   //電子郵箱必須合法
                }

            });
        });
    
</script>

<form id="signupForm" method="get" action="">
    
<fieldset>
        
<legend>用戶注冊</legend>
        <p>
            
<label for="txtPassword1">
                密碼1
</label>
            <input id="txtPassword1" name="txtPassword1" type="password" />
        </p>
        <p>
            
<label for="txtPassword2">
                密碼2
</label>
            <input id="txtPassword2" name="txtPassword2" type="password" />
        </p>
        <p>
            
<label for="txtEmail">
                郵箱
</label>
            <input id="txtEmail" name="txtEmail" />
        </p>
        <p>
            
<input type="submit" value="提交" />
        </p>
    </fieldset>
</form>

遠(yuǎn)行結(jié)果:

注意:在ASP.NET中使用這種JS驗證方法最好將服務(wù)器控件Id替換成客戶端Id,如:<%=控件Id.ClientId %>,<%=控件Id.UniqueId>

 

源碼下載

posted @ 2011-09-05 17:07 張果 閱讀(211) 評論(0) 編輯

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多