jquery-validation jquery表單驗(yàn)證

validate方法

validate方法中rules驗(yàn)證的是表單元素的name字段飒炎。默認(rèn)提示信息是英文,可通過messages配置項(xiàng)修改提示信息。


// 捕獲validato對(duì)象

var validator=$("#demoform").validate({

    // debug:true,

    // 驗(yàn)證規(guī)則

    // 驗(yàn)證的是表單元素的name字段

    rules:{

        username:{

        required:true,

        minlength:2,

        maxlength:10,

        // email:true,

        // url:true,

        // date:true,

        // 值可以是一個(gè)url湾揽,url內(nèi)容是后臺(tái)返回的數(shù)據(jù)旅挤,默認(rèn)會(huì)向后臺(tái)發(fā)送一個(gè)get請(qǐng)求

        // remote:"remote/remote.json"

        // 也可以是一個(gè)配置對(duì)象

        remote:{

        url:"remote/remote.json",

        type:"post",

        data:{

        loginTime:function(){

            return +new Date();

             }

           }

       }

 },

password:{

    required:true,

    minlength:2,

    maxlength:16

},

    // 因?yàn)閏onfirm-password有橫杠踢关,所以要用引號(hào)包裹

    "confirm-password":{

    // 值為關(guān)聯(lián)的選擇器

    equalTo:"#password"

    }

},

// 默認(rèn)英文,通過下面的設(shè)置修改提示信息

messages:{

    username:{

        required:"必須填寫用戶名",

        minlength:"用戶名最少兩個(gè)字符粘茄,最多10個(gè)字符",

        maxlength:"用戶名最少兩個(gè)字符签舞,最多10個(gè)字符",

        remote:"用戶名不存在"

    },

    password:{

        required:"必須填寫密碼",

        minlength:"密碼最少兩個(gè)字符,最多16個(gè)字符",

        maxlength:"密碼最少兩個(gè)字符柒瓣,最多16個(gè)字符"

    },

    "confirm-password":{

            equalTo:"兩次輸入的密碼不一致"

        }

    }

})

$("#check").click(function(){

    alert($("#demoform").valid()?"填寫正確":"填寫錯(cuò)誤")

})

debug:true儒搭,頁面只進(jìn)行驗(yàn)證,不進(jìn)行提交芙贫。

基本驗(yàn)證方法:

required必填

remote遠(yuǎn)程校驗(yàn)

minlength最小長度

maxlength最大長度

rangelength長度范圍

min最小值

max最大值

range值范圍

email Email格式

url url格式

date日期

dateISO ISO日期

number數(shù)字

digits非負(fù)整數(shù)

equalTo與另一個(gè)元素值相等

remote:值可以是一個(gè)url师妙,url內(nèi)容是后臺(tái)返回的數(shù)據(jù);默認(rèn)會(huì)向后臺(tái)發(fā)送一個(gè)get請(qǐng)求屹培。也可以是一個(gè)配置對(duì)象默穴,例如:


remote:{

    url:"remote/remote.json",

    //請(qǐng)求類型

    type:"post",

    //請(qǐng)求攜帶的數(shù)據(jù)

    data:{    

        loginTime:function(){return +new Date();}

    }

}

+new Date()是簡略寫法,得到long型的毫秒褪秀,等同于new Date().getTime();url :輸入的是url格式蓄诽,需帶有http或者h(yuǎn)ttps前綴

date:輸入的是日期,需要能夠被Date.parse()識(shí)別轉(zhuǎn)化.例如:2018-1-12

dateISO:輸入的ISO日期媒吗,yyyy-mm-dd

email仑氛、url、date闸英、dateISO锯岖、number、digits配置時(shí)值一般設(shè)為true甫何。

equalTo:例如確認(rèn)密碼


image.png

對(duì)應(yīng)的jq:


$("#demoform").validate(

    {

        rules:{

            username:{

            required:true,

            minlength:2,

            maxlength:10,

            remote:{    

                url:"remote/remote.json",   

                type:"post",

                data:{

                    loginTime:function(){

                        return +new Date();   

                     }   

                 }   

             }

        },

        password:{

            required:true,

            minlength:2,

            maxlength:16

        },

        // 因?yàn)閏onfirm-password有橫杠出吹,所以要用引號(hào)包裹

        "confirm-password":{

        // 值為關(guān)聯(lián)的選擇器,判斷輸入內(nèi)容是否與該選擇器的值相等

            equalTo:"#password"

            }

        },

        // 默認(rèn)英文辙喂,通過下面的設(shè)置修改提示信息

        messages:{

            username:{

                required:"必須填寫用戶名",

                minlength:"用戶名最少兩個(gè)字符捶牢,最多10個(gè)字符",

                maxlength:"用戶名最少兩個(gè)字符鸠珠,最多10個(gè)字符",

                remote:"用戶名不存在"

            },

            password:{

                    required:"必須填寫密碼",

                    minlength:"密碼最少兩個(gè)字符,最多16個(gè)字符",

                    maxlength:"密碼最少兩個(gè)字符秋麸,最多16個(gè)字符"},

                    "confirm-password":{

                            equalTo:"兩次輸入的密碼不一致"

                            }

        }

})

valid()方法

檢查表單或者某些元素是否有效渐排,返回true(正確)或false(有誤).

用法示例:在表單中添加一個(gè)button,用來檢測表單元素的值是否有效

對(duì)應(yīng)的jq:


$("#check").click(function(){

    alert($("#demoform").valid()?"填寫正確":"填寫錯(cuò)誤")

})

rules()方法

rules(); 獲取表單元素(表單里的某個(gè)元素灸蟆,而不是表單)的校驗(yàn)規(guī)則

rules("add",rules}; 向表單元素增加校驗(yàn)規(guī)則

rules("remove",rules); 刪除表單元素校驗(yàn)規(guī)則

例:獲取表單元素#username的校驗(yàn)規(guī)則:


$("#username").rules()

添加規(guī)則:


$("#username").rules("add",{min:2,max:10});

刪除規(guī)則


$("#username").rules("remove","minlengt");

$("#username").rules("remove","minlength maxlength");

注意驯耻,rules("remove",rules)方法中,第二個(gè)參數(shù)是校驗(yàn)規(guī)則的名稱炒考,如上文的minlength可缚,用引號(hào)包裹;如果同時(shí)刪除多個(gè)規(guī)則票腰,規(guī)則之間用空格隔開城看。

Validator對(duì)象

validate方法返回Validator對(duì)象,Validator的一些方法如下:

Validator.form()驗(yàn)證表單是否有效杏慰,返回true/false

Validator.element(element)驗(yàn)證某個(gè)元素是否有效测柠,返回true/false(括號(hào)里的element是要驗(yàn)證的元素的選擇器名稱)

Validator.resetForm()把表單恢復(fù)到驗(yàn)證前的狀態(tài)

Validator.showErrors(errors)針對(duì)某個(gè)元素顯示特定的錯(cuò)誤信息

Validator.numberOfInvalids()返回?zé)o效的元素?cái)?shù)量

捕獲validato對(duì)象:


var validator=$("#demoform").validate({...});//冒號(hào)代替省略了的具體內(nèi)容,使用時(shí)不能這樣寫哦

方法使用示例:


validator.form();

validator.element("#username");

validator.resetForm();//使用此方法后缘滥,表單恢復(fù)到驗(yàn)證前的狀態(tài)轰胁,驗(yàn)證提示的錯(cuò)誤信息就會(huì)被清除掉

validator.showErrors({username:"你填錯(cuò)了,哈哈"})//注意:errors是一個(gè)對(duì)象朝扼,key是表單的某個(gè)元素的name字段赃阀;當(dāng)該表單元素輸入的內(nèi)容不符合驗(yàn)證規(guī)則時(shí)就會(huì)顯示該對(duì)象里設(shè)置的value;可配置多項(xiàng)擎颖,如下:validator.showErrors({username:"你填錯(cuò)了榛斯,哈哈",password:"密碼也錯(cuò)了"})

validator.numberOfInvalids();//返回?zé)o效的元素?cái)?shù)量

validate()方法配置項(xiàng)
submitHandler:通過驗(yàn)證后運(yùn)行的函數(shù),可以加上表單提交的方法
submitHandler函數(shù)的參數(shù)是form這個(gè)dom對(duì)象搂捧。使用該函數(shù)必須傳參form,否則函數(shù)無效驮俗;如果驗(yàn)證失敗,則該函數(shù)也不會(huì)被觸發(fā)允跑。例:

submitHandler:function(form){
    // form.submit();
    console.log($(form).serialize());
}

invalidHandler:無效表單提交后運(yùn)行的函數(shù)
該函數(shù)有兩個(gè)參數(shù)王凑,第一個(gè)參數(shù)event代表無效觸發(fā)的事件,第二個(gè)參數(shù)是validator對(duì)象聋丝。
例:

invalidHandler:function(event,validator){
    console.log("錯(cuò)誤數(shù):"+validator.numberOfInvalids())
}

對(duì)于invalidHandler這個(gè)函數(shù)索烹,可以單獨(dú)從validator對(duì)象中拿出來,表達(dá)如下:

$("#demoform").on("invalid-form",function(event,validator){
    console.log("錯(cuò)誤數(shù):"+validator.numberOfInvalids())
});
//invalid-form后面可以打點(diǎn)添加自定義事件弱睦,如invalid-form.valid百姓、invalid-form.adw,都是可以被觸發(fā)的每篷,但前提是必須寫了invalid-form

ignore對(duì)某些元素不進(jìn)行驗(yàn)證瓣戚,它的值是選擇器
例:

ignore:"#username"http://不校驗(yàn)用戶名

當(dāng)省略ignore配置項(xiàng)時(shí)其實(shí)ignore有一個(gè)默認(rèn)值 ==ignore:":hidden"==端圈,表示不對(duì)隱藏元素進(jìn)行校驗(yàn)焦读。

var validator=$("#demoform").validate({
    rules:{
        username:{
            required:true,
            minlength:2,
            maxlength:10
        },
        password:{
            required:true,
            minlength:2,
            maxlength:16
        },
        "confirm-password":{
            equalTo:"#password"
        }
    },
    messages:{
        username:{
            required:"必須填寫用戶名",
            minlength:"用戶名最少兩個(gè)字符子库,最多10個(gè)字符",
            maxlength:"用戶名最少兩個(gè)字符,最多10個(gè)字符",
        },
        password:{
            required:"必須填寫密碼",
            minlength:"密碼最少兩個(gè)字符矗晃,最多16個(gè)字符",
            maxlength:"密碼最少兩個(gè)字符仑嗅,最多16個(gè)字符"
        },
        "confirm-password":{
            equalTo:"兩次輸入的密碼不一致"
        }
    },
    submitHandler:function(form){
        // form.submit();
        console.log($(form).serialize());
    },
    invalidHandler:function(event,validator){
        console.log("錯(cuò)誤數(shù):"+validator.numberOfInvalids())
    }
}

rules定義校驗(yàn)規(guī)則

rules:{
    username:{
        required:{
            //depends定義校驗(yàn)規(guī)則應(yīng)用的條件,只有當(dāng)depends函數(shù)返回true時(shí)required才生效
            // 如:
            depends:function(element){
                // 填了密碼用戶名才是必填的
                return $("#password").is(":filled");
            }
        },
        // 最小長度是2
        minlength:{
            param:2,
            depends:function(element){
                return $("#password").is(":filled");
            }
        }
    }
}

messages定義提示信息

groups對(duì)一組元素的驗(yàn)證张症,用一個(gè)錯(cuò)誤提示仓技,用errorPlacement控制把出錯(cuò)信息放在哪里。
即用groups進(jìn)行配置俗他,把一堆的錯(cuò)誤信息合并到一處;由errorPlacement控制把出錯(cuò)信息放在哪兒脖捻。

groups:{
    // login:配置的錯(cuò)誤信息名稱(自定義),值是包含的元素
    login:"username password confirm-password"
},
errorPlacement:function(error,element){
    error.insertBefore("#info");
}

onsubmit:是否在提交時(shí)驗(yàn)證兆衅,默認(rèn)值true
onfocusout:是否在獲取焦點(diǎn)時(shí)驗(yàn)證
onkeyup:是否在敲擊鍵盤時(shí)驗(yàn)證
onclick:是否在鼠標(biāo)點(diǎn)擊時(shí)驗(yàn)證地沮,一般用于checkbox或者radio
focusInvalid:提交表單后,未通過驗(yàn)證的表單(它的第一個(gè)或提交之前獲得焦點(diǎn)的未通過驗(yàn)證的表單元素)是否會(huì)獲得焦點(diǎn)
focusCleanup:當(dāng)未通過驗(yàn)證的元素獲得焦點(diǎn)時(shí)羡亩,是否移除錯(cuò)誤提示摩疑。
errorClass:指定錯(cuò)誤提示的css類名,可以自定義錯(cuò)誤提示的樣式畏铆,默認(rèn)error
validClass:指定驗(yàn)證通過的css類名雷袋,默認(rèn)valid
errorElement:用什么標(biāo)簽標(biāo)記錯(cuò)誤,默認(rèn)label標(biāo)簽
wrapper:使用什么標(biāo)簽把上面的errorElemnt包起來
errorLabelContainer:把錯(cuò)誤信息統(tǒng)一放在一個(gè)容器里面
errorContainer:顯示或隱藏驗(yàn)證信息辞居,可以自動(dòng)實(shí)現(xiàn)有錯(cuò)誤信息出現(xiàn)時(shí)把容器屬性變?yōu)轱@示楷怒,無錯(cuò)誤時(shí)隱藏

errorElement:"li",
wrapper:"ul",
errorLabelContainer:"#info",
errorContainer:"#info"

showErrors:可顯示總共有多少個(gè)未通過驗(yàn)證的元素;
一般用來進(jìn)行自定義錯(cuò)誤信息的展示處理瓦灶。

showErrors:function(errorMap,errorList){
    console.log(errorMap);
    console.log(errorList);
    // 調(diào)用默認(rèn)的錯(cuò)誤信息展示方式;一旦配置了showErrors鸠删,如果不調(diào)用,就不顯示錯(cuò)誤信息
    // this.defaultShowErrors();
}

errorPlacement:自定義錯(cuò)誤信息放到哪里
success:要驗(yàn)證的表單元素(提示信息的標(biāo)簽)通過驗(yàn)證后的動(dòng)作

// 如果是一個(gè)字符串倚搬,則給驗(yàn)證通過的提示信息一個(gè)類名
// success:"right"
// 也可以是一個(gè)方法
success:function(label){
    label.addClass("right");
}

highlight:可以給未通過驗(yàn)證的元素加效果
unhighlight:去除未通過驗(yàn)證的元素的效果冶共,一般和highlight同時(shí)使用
這兩個(gè)屬性針對(duì)的是表單的input。

highlight:function(element,errorClass,validClass){
    $(element).addClass(errorClass).removeClass(validClass);
    $(element).fadeOut().fadeIn();
},
unhighlight:function(element,errorClass,validClass){
    $(element).addClass(validClass).removeClass(errorClass);
}

選擇器擴(kuò)展
:blank選擇所有值為空的元素
:filled選擇所有值不為空的元素
:unchecked選擇所有沒有被選中的元素每界,一般用于復(fù)選框

自定義驗(yàn)證方法
jQuery.validator.addMethod(name,method,message)
name:方法名稱
method:function(value,element,params){
//value:被驗(yàn)證的表單元素的值
//element:被驗(yàn)證的表單元素
//params:比如最小長度為2捅僵,有需要就寫,沒有需要就不寫
}方法邏輯</br>
message:提示信息眨层,可有可無

$.validator.addMethod("postcode",function(value,element,params){
    var postcode=/^[0-9]{6}$/;
    // return this.optional(element) ||(postcode.test(value));
    // 自定義驗(yàn)證方法時(shí)庙楚,如果表單控件的值不為空的時(shí)候才觸發(fā)驗(yàn)證方法,就需要加上this.optional(element)
    // this.optional(element),該項(xiàng)輸入內(nèi)容不為空時(shí)才觸發(fā)驗(yàn)證趴樱;假如postcode這一項(xiàng)沒輸入內(nèi)容馒闷,則this.optional(element)直接返回true酪捡,不進(jìn)行驗(yàn)證
    // 當(dāng)該控件為必填項(xiàng)時(shí),就必須要驗(yàn)證value符合postcode纳账,這個(gè)時(shí)候就要去掉this.optional(element)
    return postcode.test(value);
},"請(qǐng)正確填寫郵政編碼逛薇!");

國際化-中文:


QQ圖片20180129161218.png

QQ圖片20180129161603.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疏虫,隨后出現(xiàn)的幾起案子永罚,更是在濱河造成了極大的恐慌,老刑警劉巖卧秘,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呢袱,死亡現(xiàn)場離奇詭異,居然都是意外死亡翅敌,警方通過查閱死者的電腦和手機(jī)羞福,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚯涮,“玉大人治专,你說我怎么就攤上這事×抵纾” “怎么了看靠?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長液肌。 經(jīng)常有香客問我挟炬,道長,這世上最難降的妖魔是什么嗦哆? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任谤祖,我火速辦了婚禮,結(jié)果婚禮上老速,老公的妹妹穿的比我還像新娘粥喜。我一直安慰自己,他們只是感情好橘券,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布额湘。 她就那樣靜靜地躺著,像睡著了一般旁舰。 火紅的嫁衣襯著肌膚如雪锋华。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天箭窜,我揣著相機(jī)與錄音毯焕,去河邊找鬼。 笑死磺樱,一個(gè)胖子當(dāng)著我的面吹牛纳猫,可吹牛的內(nèi)容都是我干的婆咸。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼芜辕,長吁一口氣:“原來是場噩夢啊……” “哼尚骄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起物遇,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤乖仇,失蹤者是張志新(化名)和其女友劉穎憾儒,沒想到半個(gè)月后询兴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡起趾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年诗舰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训裆。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眶根,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出边琉,到底是詐尸還是另有隱情属百,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布变姨,位于F島的核電站族扰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏定欧。R本人自食惡果不足惜渔呵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砍鸠。 院中可真熱鬧扩氢,春花似錦、人聲如沸爷辱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饭弓。三九已至双饥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間示启,已是汗流浹背兢哭。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夫嗓,地道東北人迟螺。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓冲秽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矩父。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锉桑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容