日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JS技巧:Javascript 驗(yàn)證表單插件

admin
2010年8月17日 23:34 本文熱度 4780
  此前,我曾經(jīng)寫過一個基于JQuery的表單校驗(yàn) validator.js ,用了一段時(shí)間發(fā)現(xiàn)出現(xiàn)了一些問題。與大家互相探討一下。 validator.jsp version: alpha 1.0
舉其中一個驗(yàn)證函數(shù)為例:
......
function CheckNull(obj, objname){
    $(obj).ready( function(){
            if (!$(obj).next().is("span")) $(obj).after(" 必填"); } );
    $(obj).focus( function(){
            $(this).next("span").html(objname+"必填");
            $(this).next("span").removeClass();
            $(this).next("span").addClass("onFocus");
    });
    $(obj).blur(function(){
            if($.trim($(this).val()) != ""){
                $(this).next("span").html("已填");
                $(this).next("span").removeClass();
                $(this).next("span").addClass("onSuccess");
            }else{
                $(this).next("span").html(objname+"必填");
                $(this).next("span").removeClass();
                $(this).next("span").addClass("onError");
        }
    });
 }
......

    設(shè)計(jì)這個驗(yàn)證插件的思路是讓團(tuán)隊(duì)中不太懂JAVASCRIPT的美工人員也可以編寫簡單的表單驗(yàn)證程序。

    主要原理是,對參數(shù)中 obj 的三種狀態(tài)進(jìn)行處理。

1.$(obj).ready      當(dāng)obj加載結(jié)束時(shí),自動插入<span>作為提示容器。

2.$(obj).focus      當(dāng)obj獲得焦點(diǎn)時(shí),提示該字段的輸入規(guī)則。

3.$(obj).blur        當(dāng)obj失去焦點(diǎn)時(shí),校驗(yàn)字段的合法性。
前端頁面調(diào)用
<script>
        $(document).ready(function(){           //頁面加載后
                CheckNull(account,"用戶名");       //校驗(yàn)用戶名不為空
        });
   
        $("submit").click(function(){
                chkfrm(document.form1);           //id="submit"按鈕添加click事件
        });

        function chkfrm(obj){                        //檢查表單各項(xiàng)
                $("input:text,input:password,select,",obj).each(function(){
                        $(this).blur();
                });
                if ($(".onError:first")==null)
                        obj.submit();                   //沒有錯誤就提交表單
                else
                        $(".onError:first").prev().focus();  //第一個出錯項(xiàng)獲得焦點(diǎn)
        }
</script>
    這個插件雖然在一段時(shí)間里滿足了實(shí)際需要,但是在持續(xù)的使用中,我發(fā)現(xiàn)存在以下幾個問題:

1.布局不靈活,在 input 后添加提示語句,如果input都是單行的,那沒有問題,但如果是一行當(dāng)中有多個input 這個插件的提示效果就很糟糕了。
2.校驗(yàn)觸發(fā)方式存在缺陷,$(this).blur();觸發(fā)校驗(yàn)并不保險(xiǎn),例如表單有默認(rèn)值無需填寫,用戶不觸發(fā)blur事件前,得不到正確提示。
3.可靠性不強(qiáng),通過 $(".onError:first")來進(jìn)行校驗(yàn),而不是通過CheckNull()的返回值進(jìn)行判斷,當(dāng)用戶有自定義CSS或禁止CSS時(shí)會出現(xiàn)麻煩。
4.結(jié)構(gòu)過渡緊密,把呈現(xiàn)與邏輯關(guān)系綁在一起,失去了調(diào)整的空間。
    針對這些問題,我在新版本中采取了完全不同的思路,并且脫離了jQuery,雖然jQuery非常好用,但是如此簡單的校驗(yàn)插件,加載jQuery也只是為了在取元素的過程中簡便一點(diǎn),考慮jQuery本身的體積,有點(diǎn)得不償失,用原生的javascript就足夠簡便了。另外,我把邏輯與呈現(xiàn)徹底分開,讓CheckNull就只是完成校驗(yàn)字段是否為空,而不控制錯誤信息的呈現(xiàn)。

validator.js version:alpha 2.0
還是同一個函數(shù)
.......
function CheckNull(obj, objname)
{
    var flag = false;
    if (obj.value == null || obj.value == "")
            flag = false;
    else
            flag = true;
    if(!flag)                                     //統(tǒng)一的處理方式
            tips(obj);                          //flag=false 顯示錯誤提示信息
    else
            clear(obj);                        //flag=true  清除錯誤提示信息
    return flag;
}
.......

前端頁面調(diào)用并校驗(yàn)
function chkfrm(obj){
    with(obj){
        var arr = new Array(                    //把所有校驗(yàn)的返回值存入數(shù)組
                CheckNull(name, "用戶名"),
                CheckNull(addr,  "地址"),
                CheckNull(tel,    "聯(lián)系電話"),
        );
        if (arr.join("").indexOf("false")<0)    //通過join把數(shù)組鏈接成字符串
           submit();                                //如果返回值中沒有false,提交表單
    }
}

     雖然結(jié)構(gòu)以及程序都非常簡單直白,但是把錯誤呈現(xiàn)都?xì)w納到 tips()中去了,那就可以在維持邏輯關(guān)系不變的情況下,只調(diào)整 tips()一個函數(shù)去控制不同的呈現(xiàn)方式,這樣設(shè)計(jì)師就可以有多種的選擇,最大限度的保持了插件的靈活性。在后續(xù)的版本中還會加入 CheckNull(obj,objname,type) 這樣的調(diào)用方式,在tips()內(nèi)置幾種不同的樣式,通過tips(obj,type)來控制選擇提示信息的樣式。實(shí)現(xiàn)同一張表單不同的表單項(xiàng)有不同形式的提示信息。

現(xiàn)在火速提供 alpha 2.0版本下載,希望拋磚引玉,讓這個插件能越來越好。


================ validator.js  version:alpha2.0 ================

目前以支持如下函數(shù):

字符串長度校驗(yàn):    CheckSLen(obj, objname, min_len, max_len);

字符串空校驗(yàn):       CheckNull(obj, objname);

字符串相等校驗(yàn):    CheckEqual(obj1, obj2, obj1name, obj2name);

數(shù)字范圍校驗(yàn):       CheckNumRange(obj, objname, min_value, max_value);

Email格式校驗(yàn):      CheckEmail(obj, objname);

SFZ格式校驗(yàn):    CheckId(obj, objname);

正則表達(dá)式校驗(yàn):    CheckExpression(obj, objname, expression);

========================================================

該文章在 2010/8/17 23:34:28 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

人人片av| Av性天堂丶| 日韩美女成人av在线| 午夜2 性| 亚洲免费视频试看| 中文无码一| 大香蕉一起操| 国产日韩AV在线直播二三区| 国产骚货综合网| AV三级伦理| 伦理av网| 久久中文网2| 亚洲 激情 一区| 欧美不卡123区| 日日色天天爽| 第一福利啪啪啪视频| 久久久国精产一区二区| 丰满人妻一区二区三区四区色| 桃色激情无码在线| 日操熟女少妇| 国产露脸正在播放| aaa欧美日韩久久| 青青草原在线精品视频| 超碰侵犯在线| 青草影院| 天天干人人干天天操人人操| 日韩中文久久精品无| ai无码换脸在线观看| 久久不卡欧美美女| 一区二区三区jing'pin| 国产精品久久久久久久久岛艾栗栗| 国产黄色片久久网| 国产综合在线亚洲| 在线免费av大香蕉| 丁香五月天堂| 男人毛片大全| 在线中文日韩伦理网站视频| 久久久久久一类黄片| 欧美视频一区二区在线免费| 国产乱弄乱淫免费视频| 久久性生活视频免费|