1. 程式人生 > >easyui 之表單驗證

easyui 之表單驗證

pla focus res default code font led disable function

  1 /** 
  2  * 擴展easyui的validator插件rules,支持更多類型驗證 
  3  */  
  4 $.extend($.fn.validatebox.defaults.rules, {  
  5             minLength : { // 判斷最小長度  
  6                 validator : function(value, param) {  
  7                     return value.length >= param[0];  
  8                 },  
  9                 message : ‘最少輸入 {0} 個字符‘  
 10
}, 11 length : { // 長度 12 validator : function(value, param) { 13 var len = $.trim(value).length; 14 return len >= param[0] && len <= param[1]; 15 }, 16 message : "輸入內容長度必須介於{0}和{1}之間" 17
}, 18 phone : {// 驗證電話號碼 19 validator : function(value) { 20 return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); 21 }, 22 message : ‘格式不正確,請使用下面格式:020-88888888‘ 23
}, 24 mobile : {// 驗證手機號碼 25 validator : function(value) { 26 return /^(13|15|18)\d{9}$/i.test(value); 27 }, 28 message : ‘手機號碼格式不正確‘ 29 }, 30 phoneAndMobile : {// 電話號碼或手機號碼 31 validator : function(value) { 32 return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value) || /^(13|15|18)\d{9}$/i.test(value); 33 }, 34 message : ‘電話號碼或手機號碼格式不正確‘ 35 }, 36 idcard : {// 驗證身份證 37 validator : function(value) { 38 return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value) || /^\d{18}(\d{2}[A-Za-z0-9])?$/i.test(value); 39 }, 40 message : ‘身份證號碼格式不正確‘ 41 }, 42 intOrFloat : {// 驗證整數或小數 43 validator : function(value) { 44 return /^\d+(\.\d+)?$/i.test(value); 45 }, 46 message : ‘請輸入數字,並確保格式正確‘ 47 }, 48 currency : {// 驗證貨幣 49 validator : function(value) { 50 return /^\d+(\.\d+)?$/i.test(value); 51 }, 52 message : ‘貨幣格式不正確‘ 53 }, 54 qq : {// 驗證QQ,從10000開始 55 validator : function(value) { 56 return /^[1-9]\d{4,9}$/i.test(value); 57 }, 58 message : ‘QQ號碼格式不正確‘ 59 }, 60 integer : {// 驗證整數 61 validator : function(value) { 62 return /^[+]?[1-9]+\d*$/i.test(value); 63 }, 64 message : ‘請輸入整數‘ 65 }, 66 chinese : {// 驗證中文 67 validator : function(value) { 68 return /^[\u0391-\uFFE5]+$/i.test(value); 69 }, 70 message : ‘請輸入中文‘ 71 }, 72 chineseAndLength : {// 驗證中文及長度 73 validator : function(value) { 74 var len = $.trim(value).length; 75 if (len >= param[0] && len <= param[1]) { 76 return /^[\u0391-\uFFE5]+$/i.test(value); 77 } 78 }, 79 message : ‘請輸入中文‘ 80 }, 81 english : {// 驗證英語 82 validator : function(value) { 83 return /^[A-Za-z]+$/i.test(value); 84 }, 85 message : ‘請輸入英文‘ 86 }, 87 englishAndLength : {// 驗證英語及長度 88 validator : function(value, param) { 89 var len = $.trim(value).length; 90 if (len >= param[0] && len <= param[1]) { 91 return /^[A-Za-z]+$/i.test(value); 92 } 93 }, 94 message : ‘請輸入英文‘ 95 }, 96 englishUpperCase : {// 驗證英語大寫 97 validator : function(value) { 98 return /^[A-Z]+$/.test(value); 99 }, 100 message : ‘請輸入大寫英文‘ 101 }, 102 unnormal : {// 驗證是否包含空格和非法字符 103 validator : function(value) { 104 return /.+/i.test(value); 105 }, 106 message : ‘輸入值不能為空和包含其他非法字符‘ 107 }, 108 username : {// 驗證用戶名 109 validator : function(value) { 110 return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value); 111 }, 112 message : ‘用戶名不合法(字母開頭,允許6-16字節,允許字母數字下劃線)‘ 113 }, 114 faxno : {// 驗證傳真 115 validator : function(value) { 116 return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); 117 }, 118 message : ‘傳真號碼不正確‘ 119 }, 120 zip : {// 驗證郵政編碼 121 validator : function(value) { 122 return /^[1-9]\d{5}$/i.test(value); 123 }, 124 message : ‘郵政編碼格式不正確‘ 125 }, 126 ip : {// 驗證IP地址 127 validator : function(value) { 128 return /d+.d+.d+.d+/i.test(value); 129 }, 130 message : ‘IP地址格式不正確‘ 131 }, 132 name : {// 驗證姓名,可以是中文或英文 133 validator : function(value) { 134 return /^[\u0391-\uFFE5]+$/i.test(value) | /^\w+[\w\s]+\w+$/i.test(value); 135 }, 136 message : ‘請輸入姓名‘ 137 }, 138 engOrChinese : {// 可以是中文或英文 139 validator : function(value) { 140 return /^[\u0391-\uFFE5]+$/i.test(value) | /^\w+[\w\s]+\w+$/i.test(value); 141 }, 142 message : ‘請輸入中文‘ 143 }, 144 engOrChineseAndLength : {// 可以是中文或英文 145 validator : function(value) { 146 var len = $.trim(value).length; 147 if (len >= param[0] && len <= param[1]) { 148 return /^[\u0391-\uFFE5]+$/i.test(value) | /^\w+[\w\s]+\w+$/i.test(value); 149 } 150 }, 151 message : ‘請輸入中文或英文‘ 152 }, 153 carNo : { 154 validator : function(value) { 155 return /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/.test(value); 156 }, 157 message : ‘車牌號碼無效(例:粵B12350)‘ 158 }, 159 carenergin : { 160 validator : function(value) { 161 return /^[a-zA-Z0-9]{16}$/.test(value); 162 }, 163 message : ‘發動機型號無效(例:FG6H012345654584)‘ 164 }, 165 same : { 166 validator : function(value, param) { 167 if ($("#" + param[0]).val() != "" && value != "") { 168 return $("#" + param[0]).val() == value; 169 } else { 170 return true; 171 } 172 }, 173 message : ‘兩次輸入的密碼不一致!‘ 174 } 175 }); 176 /** 177 * 擴展easyui validatebox的兩個方法.移除驗證和還原驗證 178 */ 179 $.extend($.fn.validatebox.methods, { 180 remove : function(jq, newposition) { 181 return jq.each(function() { 182 $(this).removeClass("validatebox-text validatebox-invalid").unbind(‘focus.validatebox‘).unbind(‘blur.validatebox‘); 183 // remove tip 184 // $(this).validatebox(‘hideTip‘, this); 185 }); 186 }, 187 reduce : function(jq, newposition) { 188 return jq.each(function() { 189 var opt = $(this).data().validatebox.options; 190 $(this).addClass("validatebox-text").validatebox(opt); 191 // $(this).validatebox(‘validateTip‘, this); 192 }); 193 }, 194 validateTip : function(jq) { 195 jq = jq[0]; 196 var opts = $.data(jq, "validatebox").options; 197 var tip = $.data(jq, "validatebox").tip; 198 var box = $(jq); 199 var value = box.val(); 200 function setTipMessage(msg) { 201 $.data(jq, "validatebox").message = msg; 202 }; 203 var disabled = box.attr("disabled"); 204 if (disabled == true || disabled == "true") { 205 return true; 206 } 207 if (opts.required) { 208 if (value == "") { 209 box.addClass("validatebox-invalid"); 210 setTipMessage(opts.missingMessage); 211 $(jq).validatebox(‘showTip‘, jq); 212 return false; 213 } 214 } 215 if (opts.validType) { 216 var result = /([a-zA-Z_]+)(.*)/.exec(opts.validType); 217 var rule = opts.rules[result[1]]; 218 if (value && rule) { 219 var param = eval(result[2]); 220 if (!rule["validator"](value, param)) { 221 box.addClass("validatebox-invalid"); 222 var message = rule["message"]; 223 if (param) { 224 for (var i = 0; i < param.length; i++) { 225 message = message.replace(new RegExp("\\{" + i + "\\}", "g"), param[i]); 226 } 227 } 228 setTipMessage(opts.invalidMessage || message); 229 $(jq).validatebox(‘showTip‘, jq); 230 return false; 231 } 232 } 233 } 234 box.removeClass("validatebox-invalid"); 235 $(jq).validatebox(‘hideTip‘, jq); 236 return true; 237 }, 238 showTip : function(jq) { 239 jq = jq[0]; 240 var box = $(jq); 241 var msg = $.data(jq, "validatebox").message 242 var tip = $.data(jq, "validatebox").tip; 243 if (!tip) { 244 tip = $("<div class=\"validatebox-tip\">" + "<span class=\"validatebox-tip-content\">" + "</span>" + "<span class=\"validatebox-tip-pointer\">" + "</span>" + "</div>").appendTo("body"); 245 $.data(jq, "validatebox").tip = tip; 246 } 247 tip.find(".validatebox-tip-content").html(msg); 248 tip.css({ 249 display : "block", 250 left : box.offset().left + box.outerWidth(), 251 top : box.offset().top 252 }); 253 }, 254 hideTip : function(jq) { 255 jq = jq[0]; 256 var tip = $.data(jq, "validatebox").tip; 257 if (tip) { 258 tip.remove; 259 $.data(jq, "validatebox").tip = null; 260 } 261 } 262 });

遠程校驗

 1 $.extend($.fn.validatebox.defaults.rules, {
 2    checkItem: {
 3         validator: function (value) {
 4             var flag = false;
 5             $.ajax({
 6                 async: false,
 7                 cache: false,                
 8                 type: ‘post‘,
 9                 url: ‘/CarSecurityCheckItem/CheckName‘,
10                 data: {
11                     name: value
12                 },
13                 success: function (date) {
14                     if (date === ‘True‘) {
15                         flag = true;
16                     }
17                 }
18             })
19             return flag;
20         },
21         message: ‘名稱已存在‘
22     } 
23 
24 })

http://uule.iteye.com/blog/1849690

easyui 之表單驗證