請查看下載文件中的style.css,把裏面Validform必須部分複製到你的css中(文件裏這個註釋 "/*==========如下部分是Validform必須的===========*/" 以後的部分是必須的)。以前發現有部分網友把整個style.css都引用在了頁面裏,而後發現樣式衝突了。php
1 2 |
<script type="text/javascript" src="http://validform.rjboy.cn/wp-content/themes/validform/js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="http://validform.rjboy.cn/Validform/v5.1/Validform_v5.1_min.js"></script> |
1 2 3 |
<form class="demoform"> <input type="text" value="" name="name" datatype="s5-16" errormsg="暱稱至少5個字符,最多16個字符!" /> </form> |
1 |
$(".demoform").Validform(); |
注:
一、Validform有非壓縮、壓縮和NCR三個版本提供下載,NCR是通用版,當你頁面因編碼問題,提示文字出現亂碼時可使用這個版本;
二、Validform沒有限定必須使用table結構,它能夠適用於任何結構,須要在tiptype中定義好位置關係。css
凡要驗證格式的元素均需綁定datatype屬性,datatype可選值內置有10類,用來指定不一樣的驗證格式。
若是還不能知足您的驗證需求,能夠傳入自定義datatype,自定義datatype是一個很是強大的功能,經過它能夠知足你的任何需求。java
能夠綁定的附加屬性有:datatype、nullmsg、sucmsg、errormsg、ignore、recheck、tip、altercss、ajaxurl 和 pluginjquery
綁定方法以下所示:ajax
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<!--ajax實時驗證用戶名--> <input type="text" value="" name="name" datatype="e" ajaxurl="valid.php?myparam1=value1&myparam2=value2" sucmsg="用戶名驗證經過!" nullmsg="請輸入用戶名!" errormsg="請用郵箱或手機號碼註冊!" /> <!--密碼--> <input type="password" value="" name="userpassword" datatype="*6-15" errormsg="密碼範圍在6~15位之間!" /> <!--確認密碼--> <input type="password" value="" name="userpassword2" datatype="*" recheck="userpassword" errormsg="您兩次輸入的帳號密碼不一致!" /> <!--默認提示文字--> <textarea tip="請在這裏輸入您的意見。" errormsg="很感謝您花費寶貴時間給咱們提供反饋,請填寫有效內容!" datatype="s" altercss="gray" class="gray" name="msg" value="">請在這裏輸入您的意見。</textarea> <!--使用swfupload插件--> <input type="text" plugin="swfupload" class="inputxt" disabled="disabled" value=""> <input type="hidden" value="" pluginhidden="swfupload"> <!--使用passwordStrength插件--> <input type="password" errormsg="密碼至少6個字符,最多18個字符!" datatype="*6-18" plugin="passwordStrength" class="inputxt" name="password" value=""> <div class="passwordStrength" style="display:none;"><b>密碼強度:</b> <span>弱</span><span>中</span><span class="last">強</span></div> <!--使用DatePicker插件--> <input type="text" plugin="datepicker" class="inputxt" name="birthday" value=""> |
$(".demoform").Validform({ usePlugin:{ datepicker:{} } }); 5.3版開始,不須要傳入這些空對象了,只需在表單元素上綁定plugin="datepicker"就能夠,初始化直接這樣: $(".demoform").Validform();
全部可用參數以下:json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
$(".demoform").Validform({ btnSubmit:"#btn_sub", btnReset:".btn_reset", tiptype:1, ignoreHidden:false, dragonfly:false, tipSweep:true, label:".label", showAllError:false, postonce:true, ajaxPost:true, datatype:{ "*6-20": /^[^\s]{6,20}$/, "z2-4" : /^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/, "username":function(gets,obj,curform,regxp){ //參數gets是獲取到的表單元素值,obj爲當前表單元素,curform爲當前驗證的表單,regxp爲內置的一些正則表達式的引用; var reg1=/^[\w\.]{4,16}$/, reg2=/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,8}$/; if(reg1.test(gets)){return true;} if(reg2.test(gets)){return true;} return false; //注意return能夠返回true 或 false 或 字符串文字,true表示驗證經過,返回字符串表示驗證失敗,字符串做爲錯誤提示顯示,返回false則用errmsg或默認的錯誤提示; }, "phone":function(){ // 5.0 版本以後,要實現二選一的驗證效果,datatype 的名稱 不 須要以 "option_" 開頭; } }, usePlugin:{ swfupload:{}, datepicker:{}, passwordstrength:{}, jqtransform:{ selector:"select,input" } }, beforeCheck:function(curform){ //在表單提交執行驗證以前執行的函數,curform參數是當前表單對象。 //這裏明確return false的話將不會繼續執行驗證操做; }, beforeSubmit:function(curform){ //在驗證成功後,表單提交前執行的函數,curform參數是當前表單對象。 //這裏明確return false的話表單將不會提交; }, callback:function(data){ //返回數據data是json對象,{"info":"demo info","status":"y"} //info: 輸出提示信息; //status: 返回提交數據的狀態,是否提交成功。如能夠用"y"表示提交成功,"n"表示提交失敗,在ajax_post.php文件返回數據裏自定字符,主要用在callback函數里根據該值執行相應的回調操做; //你也能夠在ajax_post.php文件返回更多信息在這裏獲取,進行相應操做; //ajax遇到服務端錯誤時也會執行回調,這時的data是{ status:**, statusText:**, readyState:**, responseText:** }; //這裏執行回調操做; //注意:若是不是ajax方式提交表單,傳入callback,這時data參數是當前表單對象,回調函數會在表單驗證所有經過後執行,而後判斷是否提交表單,若是callback裏明確return false,則表單不會提交,若是return true或沒有return,則會提交表單。 } }); |
tiptype:function(msg,o,cssctl){ //msg:提示信息; //o:{obj:*,type:*,curform:*}, //obj指向的是當前驗證的表單元素(或表單對象,驗證所有驗證經過,提交表單時o.obj爲該表單對象), //type指示提示的狀態,值爲一、二、三、4, 1:正在檢測/提交數據,2:經過驗證,3:驗證失敗,4:提示ignore狀態, //curform爲當前form對象; //cssctl:內置的提示信息樣式控制函數,該函數需傳入兩個參數:顯示提示信息的對象 和 當前提示的狀態(既形參o中的type); } 具體參見demo頁。tiptype不爲1時,Validform會查找class爲"Validform_checktip"的標籤顯示提示信息。tiptype=1時,會自動建立彈出框顯示提示信息。
datatyp:{ "zh2-4":/^[\u4E00-\u9FA5\uf900-\ufa2d]{2,4}$/, "phone":function(gets,obj,curform,regxp){ //參數gets是獲取到的表單元素值, //obj爲當前表單元素, //curform爲當前驗證的表單, //regxp爲內置的一些正則表達式的引用。 //return false表示驗證出錯,沒有return或者return true表示驗證經過。 } }具體示例請參考demo頁;
如示例 var demo=$(".formsub").Validform(),那麼demo對象會有如下屬性和方法能夠調用:
如:demo.tipmsg.s="error! no message inputed.";
經過該對象能夠修改除 tit 之外的其餘提示文字,這樣能夠實現同一個頁面的不一樣表單使用不一樣的提示文字。
具體可修改的提示文字 $.Tipmsg={//默認提示文字; tit:"提示信息", w:{ "*":"不能爲空!", "*6-16":"請填寫6到16位任意字符!", "n":"請填寫數字!", "n6-16":"請填寫6到16位數字!", "s":"不能輸入特殊字符!", "s6-18":"請填寫6到18位字符!", "p":"請填寫郵政編碼!", "m":"請填寫手機號碼!", "e":"郵箱地址格式不對!", "url":"請填寫網址!" }, def:"請填寫正確信息!", undef:"datatype未定義!", reck:"兩次輸入的內容不一致!", r:"經過信息驗證!", c:"正在檢測信息…", s:"請{填寫|選擇}{0|信息}!", v:"所填信息沒有通過驗證,請稍後…", p:"正在提交數據…" };
要修改tit(彈出框的標題文字)的話,能夠這樣:$.Tipmsg.tit="Message Box",則彈出框的標題文字會換成"Message Box"
注:5.3.2+
$.Tipmsg.w裏,形如"*6-16"的提示文字,裏面的數字是會被替換的。如綁定datatype="*2-18",那它默認的出錯信息就會是"請填寫2到18位任意字符!",能夠經過$.Tipmsg.w或Validform對象的tipmsg屬性修改和擴展默認錯誤信息,若是你已經設置了"zh2-4"的提示信息是"2-4位中文",那麼"zh2-8"出錯的信息就自動會是:"2-8位中文"。對於自定義的datatype,在擴展默認信息時,注意錯誤信息的名字要跟datatype名字同樣,如上面示例是:$.Tipmsg.w["zh2-4"]="2-4位中文"。對於多頁面或一個頁面多表單有相同datatype來講,在$.Tipmsg.w或Validform對象的tipmsg屬性中擴展默認提示信息是個很好的選擇。
5.3.1+
$.Tipmsg.s是用來指定在沒有綁定nullmsg時的默認提示信息。"{0}"是會被找到的label參數指定的對象或Validform_label裏的文字替換掉的,"{填寫|選擇}"裏的文字在綁定了"recheck"屬性的表單元素上檢測時是會不顯示的,當前驗證對象是radio、checkbox或select時,會輸出"選擇",是其餘類型的元素時會輸出"填寫"和後面的"信息"。
具體示例請參見demo頁。
獲取內置的一些正則:
{ "match":/^(.+?)(\d+)-(\d+)$/, "*":/[\w\W]+/, "*6-16":/^[\w\W]{6,16}$/, "n":/^\d+$/, "n6-16":/^\d{6,16}$/, "s":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]+$/, "s6-18":/^[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]{6,18}$/, "p":/^[0-9]{6}$/, "m":/^13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9}$/, "e":/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, "url":/^(\w+:\/\/)?\w+(\.\w+)+.*$/ }
能夠經過Validform對象的這個方法來給表單元素綁定驗證規則,綁定驗證類型中列出的附加屬性均可以經過這個方法綁定。
demo.addRule([ { ele:"#name", datatype:"s6-18", ajaxurl:"valid.php", nullmsg:"請輸入暱稱!", errormsg:"暱稱至少6個字符,最多18個字符!" }, { ele:"#userpassword", datatype:"*6-16", nullmsg:"請設置密碼!", errormsg:"密碼範圍在6~16位之間!" }, { ele:"#userpassword2", datatype:"*", recheck:"userpassword", nullmsg:"請再輸入一次密碼!", errormsg:"您兩次輸入的帳號密碼不一致!" } ]);
其中ele是指定要綁定規則的對象,會在Validform對象下查找這些對象。
獲取Validform對象的第n個元素。
如你頁面上有多個form的class都是formsub,執行上面的驗證綁定,獲得的demo對象就能夠操做全部這些表單,若是你要對其中某個表單執行某些操做,那麼就可使用這個方法。
如demo.eq(0).resetForm(),重置第一個表單。
以ajax方式提交表單。flag爲true時,跳過驗證直接提交,sync爲true時將以同步的方式進行ajax提交。
參數url是5.3版新增,傳入了url地址時,表單會提交到這個地址
如demo.ajaxPost(true),不作驗證直接ajax提交表單。
終止ajax的提交。
如執行上面的ajaxPost()以後,發現某些項填寫不對,想取消表單提交,那麼就能夠執行這個操做:demo.abort()
以初始化時傳入參數的設置方式提交表單,flag爲true時,跳過驗證直接提交。
參數url是5.3版新增,傳入了url地址時,表單會提交到這個地址
如demo.submitForm(true),不作驗證直接提交表單。
重置表單。
如demo.resetForm(),重置表單到初始狀態。
重置表單的提交狀態。傳入了postonce參數的話,表單成功提交後狀態會設置爲"posted",重置提交狀態可讓表單繼續能夠提交。
如demo.resetStatus()
獲取表單的提交狀態,normal:未提交,posting:正在提交,posted:已成功提交過。
如demo.getStatus()
設置表單的提交狀態,能夠設置normal,posting,posted三種狀態,不傳參則設置狀態爲posting,這個狀態表單能夠驗證,但不能提交。
如demo.setStatus("posted")
忽略對所選擇對象的驗證,不傳入selector則忽略全部表單元素。
如demo.ignore("select,textarea,#name"),忽略Validform對象下全部select,textarea及一個id爲"name"元素的驗證。
將ignore方法所忽略驗證的對象從新獲取驗證效果,不傳入selector則恢復驗證全部表單元素。
如demo.unignore("select,textarea,#name"),恢復Validform對象下全部select,textarea及一個id爲"name"元素的驗證。
bool爲true時則只驗證不顯示提示信息
對指定對象進行驗證(默認驗證當前整個表單),經過返回true,不然返回false(綁定實時驗證的對象,格式符合要求時返回true,而不會等ajax的返回結果)
如demo.check(),驗證當前整個表單,且只驗證但不顯示對錯信息。
setup參數是一個對象。
如:
demo.config({
showAllError:true,
url:"這裏指定提交地址",
ajaxpost:{
//能夠傳入$.ajax()能使用的,除dataType外的全部參數;
},
ajaxurl:{
//能夠傳入$.ajax()能使用的,除dataType外的全部參數;
}
})
可用參數:
tiptype等 5.3.2+:能夠在這裏設置初始化可用的全部參數 url:指定表單的提交路徑,這裏指定的路徑會覆蓋表單action屬性所指定的路徑 ajaxpost:表單以ajax提交時,能夠在這裏配置ajax的參數 ajaxurl:配置實時驗證ajax的參數 ①、config方法還能爲已經初始化過的表單從新配置參數了!5.3.2+ 如var demo=$(".formsub").Validform(); demo.config({tiptype:2}); demo下的各表單還能分別配置不一樣參數! 如demo.eq(0).config({tiptype:1,ajaxPost:true}); demo.eq(1).config({tiptype:1,callback:function(curform){my_method_to_submit_form(); return false;}}); ②、執行config能夠動態設置、添加參數,如: demo.config({ url:"http://validform.rjboy.cn" }); $(".save").click(function(){ demo.config({ ajaxpost:{ timeout:1000 } }); }); 那麼在點擊save按鈕後,demo所對應的表單的config={ url:"http://validform.rjboy.cn", ajaxpost:{ timeout:1000 } } ③、參數url的優先級:form表單的action所指定的提交地址會被config.url覆蓋, config.url會被config.ajaxpost.url覆蓋,config.ajaxpost.url會被Validform對象的方法submitForm(flag,url) 和ajaxPost(flag,sync,url)裏的url覆蓋。 若是表單裏沒有指定action提交地址,那麼就會提交到config.url設定的地址。 考慮到整個驗證框架的邏輯,傳入dataType參數不會起做用,不會被覆蓋,ajax必須返回含有status值的json數據。 ④、另外注意的是:傳入的success和error方法裏,能多獲取到一個參數,如: demo.config={ ajaxpost:{ url:"", timeout:1000, ..., success:function(data,obj){ //data是返回的json數據; //obj是當前表單的jquery對象; }, error:function(data,obj){ //data是{ status:**, statusText:**, readyState:**, responseText:** }; //obj是當前表單的jquery對象; } }, ajaxurl:{ success:function(data,obj){ //data是返回的json數據; //obj是當前正作實時驗證表單元素的jquery對象; //注意:5.3版中,實時驗證的返回數據須是含有status值的json數據! //跟callback裏的ajax返回數據格式統一,建議再也不返回字符串"y"或"n"。目前這兩種格式的數據都兼容。 } } }
能夠經過$.Datatype對象來擴展datatype類型。
如$.Datatype.zh=/^[\u4E00-\u9FA5\uf900-\ufa2d]{1,}$/
能夠經過$.Tipmsg對象來修改默認提示文字。具體可修改的提示文字請查看Validform對象的tipmsg屬性。
若是Validform對象的tipmsg屬性沒有找到相關的提示信息,那麼就會到$.Tipmsg中查找對應提示文字。
如$.Tipmsg.tit="msg box"; //設置默認彈出框的標題文字。
調用Validform自定義的彈出框。
參數msg是要顯示的提示文字。
如$.Showmsg("這是提示文字"); //若是不傳入信息則不會有彈出框出現,像$.Showmsg()這樣是不會彈出提示框的。
關閉Validform自定義的彈出框。
如$.Hidemsg()