国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

verify.js 極簡(jiǎn)表單校驗(yàn)插件

cppowboy / 3190人閱讀

摘要:這是一款極簡(jiǎn)潔的表單校驗(yàn)插件,僅行代碼,屬于半封裝模式,可任意編寫業(yè)務(wù)邏輯代碼,核心代碼如下校驗(yàn)插件判斷是否函數(shù)表單提交校驗(yàn)全部將單個(gè)事件對(duì)象追加到數(shù)組中,提交表單時(shí)遍歷執(zhí)行核心處理方法單個(gè)元素注冊(cè)失焦事件遍歷對(duì)象提交按鈕注冊(cè)事件返回集合,

這是一款極簡(jiǎn)潔的表單校驗(yàn)插件,僅50行代碼,屬于半封裝模式,可任意編寫業(yè)務(wù)邏輯代碼,核心代碼如下:

(function(){
    // 校驗(yàn)插件
    if(!$.fn.hasOwnProperty("verify")){
        $.fn.verify = function(config) {
            var fields = [], item;
            if (!config) return;
            // 判斷是否函數(shù)
            function isFunction(obj) {
                return !!(obj && obj.constructor && obj.call && obj.apply);
            }
            // 表單提交校驗(yàn)(全部)
            function handleSubmit() {
                var  i, errors = false, len = fields.length;
                for (i = 0; i < len; i++) {
                    if (!fields[i].testValid()) errors = true;
                }
                if (errors) return false;
                if (isFunction(config.success)) return config.success();
            }
            function process(opts, selector) {
                var field = $(selector),
                    error = {message: opts.message || ""},
                    errorEl = config.errorTemplate(error);
                // 將單個(gè)input事件對(duì)象追加到數(shù)組中,提交表單時(shí)遍歷執(zhí)行                    
                fields.push(field);
                // 核心處理方法
                field.testValid = function testValid() {
                    var temp, error, el = $(this), val = el.val();
                    error = !opts.test(val);
                    if (error) {
                        el.after(errorEl);
                        return false;
                    } else {
                        temp = errorEl.get(0);
                        temp.parentNode && temp.parentNode.removeChild(temp);
                        return true;
                    }
                };
                // 單個(gè)input元素注冊(cè)失焦事件
                field.on("blur", field.testValid);
            }
            // 遍歷對(duì)象
            for(item in config.fields) {
                process(config.fields[item], item)
            }
            // 提交按鈕注冊(cè)事件
            if (config.submitButton) {
                $(config.submitButton).click(handleSubmit);
            } else {
                this.on("submit", handleSubmit);
            }
            // 返回集合,供調(diào)用
            return fields;            
        }
    }    
})();

插件調(diào)用方法如下:

(function(){
    // 注冊(cè)校驗(yàn)
    $("#register").verify({
        fields:{
            //選中名字字段,設(shè)置校驗(yàn)規(guī)則
            "#register input[name="phone"]":{
                //錯(cuò)誤提示信息
                message:"手機(jī)號(hào)碼格式不正確,請(qǐng)重新輸入",
                //校驗(yàn)規(guī)則,返回布爾值,true則成功,false則失敗,可在此回調(diào)函數(shù)中插入您的業(yè)務(wù)邏輯,最終返回bool值就好,極方便
                test:function(val){
                    var reg = /^(1[3-8][0-9])d{8}$/;
                    return reg.test(val);
                }
            },
            "#register input[name="password"]":{
                message:"請(qǐng)輸入正確格式的密碼",
                test: function (val) {
                    if (!val) return false;
                    var reg = /^[a-zA-Z0-9]{6,20}$/;
                    return reg.test(val);
                }
            },
            "#register input[name="repassword"]":{
                message:"兩次密碼輸入不一致!",
                test:function(val){
                    var password = $("input[name="password"]").val();
                    if(password != val) {
                        return false;
                    } else {
                        return true;
                    }
                }
            }                            
        },
        // 錯(cuò)誤模板,設(shè)置裝載錯(cuò)誤信息的容器,插入上面設(shè)置的錯(cuò)誤提示信息
        errorTemplate:function(error){            
            return $("
" + error.message + "
"); }, //校驗(yàn)成功后的回調(diào)方法,可插入校驗(yàn)成功后要執(zhí)行的邏輯代碼 success:function(){ //coding~~ } //表單提交按鈕,若未設(shè)置,則為默認(rèn)的form.submit; submitButton: "#register .submit" }); })

原本是想在插件內(nèi)封裝一些固定的表單校驗(yàn)方法,但后來(lái)發(fā)現(xiàn)各種業(yè)務(wù)需求千奇百怪,簡(jiǎn)直眾口難調(diào),固以此方式呈現(xiàn),只封裝通用的校驗(yàn)流程,業(yè)務(wù)邏輯自行穿插,美其名曰:”半封裝“,具體優(yōu)劣各位看官自行研究了,當(dāng)然,更希望您能夠分享自己的見(jiàn)解~~

下附傳送門,詳細(xì)測(cè)試demo請(qǐng)自行跳轉(zhuǎn)下載,不謝!
https://github.com/cloverso/verify

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/86013.html

相關(guān)文章

  • 使用vue自定義指令開(kāi)發(fā)一個(gè)表單驗(yàn)證插件validate.js

    摘要:今天就來(lái)介紹一下如何利用的自定義指令來(lái)開(kāi)發(fā)一個(gè)表單驗(yàn)證插件的過(guò)程。按照這種方式就能夠使用自己開(kāi)發(fā)的這個(gè)表單校驗(yàn)插件。這段時(shí)間在進(jìn)行一個(gè)新項(xiàng)目的前期搭建,新項(xiàng)目框架采用vue-cli3和typescirpt搭建。因?yàn)轫?xiàng)目比較輕量,所以基本沒(méi)有使用額外的ui組件,有時(shí)候我們需要的一些基礎(chǔ)組件我就直接自己開(kāi)發(fā)了。今天就來(lái)介紹一下如何利用vue的自定義指令directive來(lái)開(kāi)發(fā)一個(gè)表單驗(yàn)證插件的過(guò)...

    warnerwu 評(píng)論0 收藏0
  • va.js——Vue 表單驗(yàn)證插件的寫作過(guò)程

    摘要:一表單驗(yàn)證模塊的構(gòu)成任何表單驗(yàn)證模塊都是由配置校驗(yàn)報(bào)錯(cuò)取值這幾部分構(gòu)成的。其實(shí)我是想寫個(gè)指令來(lái)完成表單驗(yàn)證的事的。當(dāng)然表單驗(yàn)證這種是高度定制化的。 前言 前段時(shí)間,老大搭好了Vue的開(kāi)發(fā)環(huán)境,于是我們愉快地從JQ來(lái)到了Vue。這中間做的時(shí)候,在表單驗(yàn)證上做的不開(kāi)心,看到vue的插件章節(jié),感覺(jué)自己也能寫一個(gè),因此就自己開(kāi)始寫了一個(gè)表單驗(yàn)證插件va.js。 當(dāng)然為什么不找個(gè)插件呢? vu...

    suosuopuo 評(píng)論0 收藏0
  • JQuery填坑系列(二):動(dòng)態(tài)添加表單校驗(yàn)失效問(wèn)題

    摘要:表單驗(yàn)證用的插件,還用到了下拉列表相關(guān)的插件。沒(méi)想到,這其中暗暗地隱藏著一個(gè)個(gè)坑。于是看了一下插件的官方文檔,它提供了兩種方法,可以在表單元素上添加,刪除校驗(yàn)規(guī)則。 表單驗(yàn)證用的jquery validation插件,還用到了下拉列表相關(guān)的插件selectize。有這樣一個(gè)功能,表單中一個(gè)下拉列表A的required屬性是根據(jù)另一個(gè)下拉列表B的選擇內(nèi)容來(lái)動(dòng)態(tài)變換的。于是想著根據(jù)B被選中...

    LeviDing 評(píng)論0 收藏0
  • 巧用 Bootstrap的 popover插件 實(shí)現(xiàn)表單校驗(yàn)提示

    摘要:瀏覽文檔,發(fā)現(xiàn)插件特別適合做表單校驗(yàn)出錯(cuò)的提示。因?yàn)槭沟姆浅nl繁,最近把它封住下,做成的插件。通過(guò)本插件,在標(biāo)簽中定義好校驗(yàn)正則錯(cuò)誤信息即可。點(diǎn)擊提交時(shí),如果有表單項(xiàng)目不合法,會(huì)阻止表單繼續(xù)提交。最后調(diào)整下,就實(shí)現(xiàn)了截圖的效果。 最近的項(xiàng)目,用Bootstrap比較多。瀏覽Bootstrap文檔,發(fā)現(xiàn) popover 插件特別適合做表單校驗(yàn)出錯(cuò)的提示。 因?yàn)槭沟姆浅nl繁,最近把它封住下...

    Corwien 評(píng)論0 收藏0
  • css進(jìn)階

    摘要:柵格系統(tǒng)用于處理頁(yè)面多終端適配的問(wèn)題。它表示抓取對(duì)象以后拖放到另一個(gè)位置。目前,它是標(biāo)準(zhǔn)的一部分。精簡(jiǎn)高效的命名準(zhǔn)則方法這篇文章發(fā)布于年月日,星期日,,歸類于相關(guān)。但是不會(huì)受到包含塊的限制,可能會(huì)溢出。 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個(gè)問(wèn)題:怎樣通過(guò) CSS 簡(jiǎn)單而優(yōu)雅的實(shí)現(xiàn)水平、垂直同時(shí)居中。記得剛開(kāi)始學(xué)習(xí) CSS 的時(shí)候,看到 float 屬性不由...

    import. 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<