EasyUI validType属性

  1 /**
  2  * 包含easyui的扩展和常用的方法
  3  *
  4  * @author
  5  *
  6  * @version 20120806
  7  */
  8  
  9 var wjc = $.extend({}, wjc);/* 定义全局对象,类似于命名空间或包的作用 */
 10  
 11 /**
 12  *
 13  * @requires jQuery,EasyUI
 14  *
 15  * panel关闭时回收内存,主要用于layout使用iframe嵌入网页时的内存泄漏问题
 16  */
 17 $.fn.panel.defaults.onBeforeDestroy = function() {
 18     var frame = $('iframe', this);
 19     try {
 20         if (frame.length > 0) {
 21             for ( var i = 0; i < frame.length; i++) {
 22                 frame[i].contentWindow.document.write('');
 23                 frame[i].contentWindow.close();
 24             }
 25             frame.remove();
 26             if ($.browser.msie) {
 27                 CollectGarbage();
 28             }
 29         }
 30     } catch (e) {
 31     }
 32 };
 33  
 34 /**
 35  * 使panel和datagrid在加载时提示
 36  *
 37  *
 38  * @requires jQuery,EasyUI
 39  *
 40  */
 41 $.fn.panel.defaults.loadingMessage = '加载中....';
 42 $.fn.datagrid.defaults.loadMsg = '加载中....';
 43  
 44 /**
 45  * @author wfire
 46  *
 47  * @requires jQuery,EasyUI
 48  *
 49  * 通用错误提示
 50  *
 51  * 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作
 52  */
 53 var easyuiErrorFunction = function(XMLHttpRequest) {
 54     $.messager.progress('close');
 55 //  $.messager.alert('错误', XMLHttpRequest.responseText);
 56 //  $.messager.confirm('错  误',XMLHttpRequest.responseText,function(r){  
 57 //      if (r){
 58 //          parent.location.replace('login.jsp');
 59 //      }  
 60 //  });
 61 };
 62 $.fn.datagrid.defaults.onLoadError = easyuiErrorFunction;
 63 $.fn.treegrid.defaults.onLoadError = easyuiErrorFunction;
 64 $.fn.tree.defaults.onLoadError = easyuiErrorFunction;
 65 $.fn.combogrid.defaults.onLoadError = easyuiErrorFunction;
 66 $.fn.combobox.defaults.onLoadError = easyuiErrorFunction;
 67 $.fn.form.defaults.onLoadError = easyuiErrorFunction;
 68  
 69 /**
 70  *
 71  * @requires jQuery,EasyUI
 72  *
 73  * 为datagrid、treegrid增加表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中
 74  */
 75 var createGridHeaderContextMenu = function(e, field) {
 76     e.preventDefault();
 77     var grid = $(this);/* grid本身 */
 78     var headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */
 79     if (!headerContextMenu) {
 80         var tmenu = $('<div style="width:100px;"></div>').appendTo('body');
 81         var fields = grid.datagrid('getColumnFields');
 82         for ( var i = 0; i < fields.length; i++) {
 83             var fildOption = grid.datagrid('getColumnOption', fields[i]);
 84             if (!fildOption.hidden) {
 85                 $('<div iconCls="icon-ok" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
 86             } else {
 87                 $('<div iconCls="icon-empty" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
 88             }
 89         }
 90         headerContextMenu = this.headerContextMenu = tmenu.menu({
 91             onClick : function(item) {
 92                 var field = $(item.target).attr('field');
 93                 if (item.iconCls == 'icon-ok') {
 94                     grid.datagrid('hideColumn', field);
 95                     $(this).menu('setIcon', {
 96                         target : item.target,
 97                         iconCls : 'icon-empty'
 98                     });
 99                 } else {
100                     grid.datagrid('showColumn', field);
101                     $(this).menu('setIcon', {
102                         target : item.target,
103                         iconCls : 'icon-ok'
104                     });
105                 }
106             }
107         });
108     }
109     headerContextMenu.menu('show', {
110         left : e.pageX,
111         top : e.pageY
112     });
113 };
114 $.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
115 $.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
116  
117 /**
118  *
119  * @requires jQuery,EasyUI
120  *
121  * 扩展validatebox,添加验证两次密码功能
122  */
123 $.extend($.fn.validatebox.defaults.rules, {
124     eqPwd : {
125         validator : function(value, param) {
126             return value == $(param[0]).val();
127         },
128         message : '密码不一致!'
129     },
130     idcard : {// 验证身份证
131         validator : function(value) {
132             return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
133         },
134         message : '身份证号码格式不正确'
135     },
136     minLength: {
137         validator: function(value, param){
138             return value.length >= param[0];
139         },
140         message: '请输入至少(2)个字符.'
141     },
142     length:{validator:function(value,param){
143         var len=$.trim(value).length;
144             return len>=param[0]&&len<=param[1];
145         },
146         message:"输入内容长度必须介于{0}和{1}之间."
147     },
148     phone : {// 验证电话号码
149         validator : function(value) {
150             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);
151         },
152         message : '格式不正确,请使用下面格式:010-88888888'
153     },
154     mobile : {// 验证手机号码
155         validator : function(value) {
156             return /^(13|15|18)\d{9}$/i.test(value);
157         },
158         message : '手机号码格式不正确'
159     },
160     intOrFloat : {// 验证整数或小数
161         validator : function(value) {
162             return /^\d+(\.\d+)?$/i.test(value);
163         },
164         message : '请输入数字,并确保格式正确'
165     },
166     currency : {// 验证货币
167         validator : function(value) {
168             return /^\d+(\.\d+)?$/i.test(value);
169         },
170         message : '货币格式不正确'
171     },
172     qq : {// 验证QQ,从10000开始
173         validator : function(value) {
174             return /^[1-9]\d{4,9}$/i.test(value);
175         },
176         message : 'QQ号码格式不正确'
177     },
178     integer : {// 验证整数
179         validator : function(value) {
180             return /^[+]?[1-9]+\d*$/i.test(value);
181         },
182         message : '请输入整数'
183     },
184     age : {// 验证年龄
185         validator : function(value) {
186             return /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i.test(value);
187         },
188         message : '年龄必须是0到120之间的整数'
189     },
190     chinese : {// 验证中文
191         validator : function(value) {
192             return /^[\Α-\¥]+$/i.test(value);
193         },
194         message : '请输入中文'
195     },
196     english : {// 验证英语
197         validator : function(value) {
198             return /^[A-Za-z]+$/i.test(value);
199         },
200         message : '请输入英文'
201     },
202     unnormal : {// 验证是否包含空格和非法字符
203         validator : function(value) {
204             return /.+/i.test(value);
205         },
206         message : '输入值不能为空和包含其他非法字符'
207     },
208     username : {// 验证用户名
209         validator : function(value) {
210             return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value);
211         },
212         message : '用户名不合法(字母开头,允许6-16字节,允许字母数字下划线)'
213     },
214     faxno : {// 验证传真
215         validator : function(value) {
216             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);
217         },
218         message : '传真号码不正确'
219     },
220     zip : {// 验证邮政编码
221         validator : function(value) {
222             return /^[0-9]\d{5}$/i.test(value);
223         },
224         message : '邮政编码格式不正确'
225     },
226     ip : {// 验证IP地址
227         validator : function(value) {
228             return /d+.d+.d+.d+/i.test(value);
229         },
230         message : 'IP地址格式不正确'
231     },
232     name : {// 验证姓名,可以是中文或英文
233             validator : function(value) {
234                 return /^[\Α-\¥]+$/i.test(value)|/^\w+[\w\s]+\w+$/i.test(value);
235             },
236             message : '请输入姓名'
237     },
238     msn:{
239             validator : function(value){
240                 return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
241             },
242             message : '请输入有效的msn账号(例:abc@hotnail(msn/live).com)'
243     }
244 });
245  
246 /**
247  *
248  * @requires jQuery,EasyUI
249  *
250  * 扩展tree,使其支持平滑数据格式
251  */
252 $.fn.tree.defaults.loadFilter = function(data, parent) {
253     var opt = $(this).data().tree.options;
254     var idFiled, textFiled, parentField;
255     if (opt.parentField) {
256         idFiled = opt.idFiled || 'id';
257         textFiled = opt.textFiled || 'text';
258         parentField = opt.parentField;
259         var i, l, treeData = [], tmpMap = [];
260         for (i = 0, l = data.length; i < l; i++) {
261             tmpMap[data[i][idFiled]] = data[i];
262         }
263         for (i = 0, l = data.length; i < l; i++) {
264             if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
265                 if (!tmpMap[data[i][parentField]]['children'])
266                     tmpMap[data[i][parentField]]['children'] = [];
267                 data[i]['text'] = data[i][textFiled];
268                 tmpMap[data[i][parentField]]['children'].push(data[i]);
269             } else {
270                 data[i]['text'] = data[i][textFiled];
271                 treeData.push(data[i]);
272             }
273         }
274         return treeData;
275     }
276     return data;
277 };
278  
279 /**
280  *
281  * @requires jQuery,EasyUI
282  *
283  * 扩展treegrid,使其支持平滑数据格式
284  */
285 $.fn.treegrid.defaults.loadFilter = function(data, parentId) {
286     var opt = $(this).data().treegrid.options;
287     var idFiled, textFiled, parentField;
288     if (opt.parentField) {
289         idFiled = opt.idFiled || 'id';
290         textFiled = opt.textFiled || 'text';
291         parentField = opt.parentField;
292         var i, l, treeData = [], tmpMap = [];
293         for (i = 0, l = data.length; i < l; i++) {
294             tmpMap[data[i][idFiled]] = data[i];
295         }
296         for (i = 0, l = data.length; i < l; i++) {
297             if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
298                 if (!tmpMap[data[i][parentField]]['children'])
299                     tmpMap[data[i][parentField]]['children'] = [];
300                 data[i]['text'] = data[i][textFiled];
301                 tmpMap[data[i][parentField]]['children'].push(data[i]);
302             } else {
303                 data[i]['text'] = data[i][textFiled];
304                 treeData.push(data[i]);
305             }
306         }
307         return treeData;
308     }
309     return data;
310 };
311  
312 /**
313  * @author wfire
314  *
315  * @requires jQuery,EasyUI
316  *
317  * 扩展combotree,使其支持平滑数据格式
318  */
319 $.fn.combotree.defaults.loadFilter = $.fn.tree.defaults.loadFilter;
320  
321 /**
322  *
323  * @requires jQuery,EasyUI
324  *
325  * 防止panel/window/dialog组件超出浏览器边界
326  * @param left
327  * @param top
328  */
329 var easyuiPanelOnMove = function(left, top) {
330     var l = left;
331     var t = top;
332     if (l < 1) {
333         l = 1;
334     }
335     if (t < 1) {
336         t = 1;
337     }
338     var width = parseInt($(this).parent().css('width')) + 14;
339     var height = parseInt($(this).parent().css('height')) + 14;
340     var right = l + width;
341     var buttom = t + height;
342     var browserWidth = $(window).width();
343     var browserHeight = $(window).height();
344     if (right > browserWidth) {
345         l = browserWidth - width;
346     }
347     if (buttom > browserHeight) {
348         t = browserHeight - height;
349     }
350     $(this).parent().css({/* 修正面板位置 */
351         left : l,
352         top : t
353     });
354 };
355 $.fn.dialog.defaults.onMove = easyuiPanelOnMove;
356 $.fn.window.defaults.onMove = easyuiPanelOnMove;
357 $.fn.panel.defaults.onMove = easyuiPanelOnMove;
358  
359 /**
360  *
361  * @requires jQuery,EasyUI,jQuery cookie plugin
362  *
363  * 更换EasyUI主题的方法
364  *
365  * @param themeName
366  *            主题名称
367  */
368 changeTheme = function(themeName) {
369     var $easyuiTheme = $('#easyuiTheme');
370     var url = $easyuiTheme.attr('href');
371     var href = url.substring(0, url.indexOf('themes')) + 'themes/' + themeName + '/easyui.css';
372     $easyuiTheme.attr('href', href);
373  
374     var $iframe = $('iframe');
375     if ($iframe.length > 0) {
376         for ( var i = 0; i < $iframe.length; i++) {
377             var ifr = $iframe[i];
378             $(ifr).contents().find('#easyuiTheme').attr('href', href);
379         }
380     }
381  
382     $.cookie('easyuiThemeName', themeName, {
383         expires : 7
384     });
385 };
386  
387  
388 serializeObject = function(form) {
389     var o = {};
390     $.each(form.serializeArray(), function(index) {
391         if (o[this['name']]) {
392             o[this['name']] = o[this['name']] + "," + this['value'];
393         } else {
394             o[this['name']] = this['value'];
395         }
396     });
397     return o;
398 };
399  
400 /**
401  *
402  * 增加formatString功能
403  *
404  * 使用方法:formatString('字符串{0}字符串{1}字符串','第一个变量','第二个变量');
405  *
406  * @returns 格式化后的字符串
407  */
408 formatString = function(str) {
409     for ( var i = 0; i < arguments.length - 1; i++) {
410         str = str.replace("{" + i + "}", arguments[i + 1]);
411     }
412     return str;
413 };
414  
415  
416 stringToList = function(value) {
417     if (value != undefined && value != '') {
418         var values = [];
419         var t = value.split(',');
420         for ( var i = 0; i < t.length; i++) {
421             values.push('' + t[i]);/* 避免他将ID当成数字 */
422         }
423         return values;
424     } else {
425         return [];
426     }
427 };
428  
429  
430 //$.ajaxSetup({
431 //  type : 'POST',
432 //  error : function(XMLHttpRequest, textStatus, errorThrown) {
433 //      $.messager.progress('close');
434 //      $.messager.alert('错误', errorThrown);
435 //  }
436 //});
437 /**
438  * @author
439  *
440  * @requires jQuery
441  *
442  * 判断浏览器是否是IE并且版本小于8
443  *
444  * @returns true/false
445  */
446 wjc.isLessThanIe7 = function() {
447     return ($.browser.msie && $.browser.version < 7);
448 };
449  
450 //时间格式化
451 wjc.dateFormat = function (format) {
452     /*
453      * eg:format="yyyy-MM-dd hh:mm:ss";
454      */
455     if (!format) {
456         format = "yyyy-MM-dd hh:mm:ss";
457     }
458      
459     var o = {
460         "M+" : this.getMonth() + 1, // month
461         "d+" : this.getDate(), // day
462         "h+" : this.getHours(), // hour
463         "m+" : this.getMinutes(), // minute
464         "s+" : this.getSeconds(), // second
465         "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter
466         "S" : this.getMilliseconds()
467         // millisecond
468     };
469      
470     if (/(y+)/.test(format)) {
471         format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
472     }
473      
474     for (var k in o) {
475         if (new RegExp("(" + k + ")").test(format)) {
476             format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
477         }
478     }
479     return format;
480 };

 出自:http://www.cnblogs.com/exmyth/p/4046216.html

posted @ 2017-03-11 10:07  浪涛飞  阅读(9138)  评论(0编辑  收藏  举报