1. 程式人生 > >EasyUI validType屬性詳解

EasyUI validType屬性詳解

/**
 * 包含easyui的擴充套件和常用的方法
 *
 * @author
 *
 * @version 20120806
 */
 
var wjc = $.extend({}, wjc);/* 定義全域性物件,類似於名稱空間或包的作用 */
 
/**
 *
 * @requires jQuery,EasyUI
 *
 * panel關閉時回收記憶體,主要用於layout使用iframe嵌入網頁時的記憶體洩漏問題
 */
$.fn.panel.defaults.onBeforeDestroy = function() {
    var frame = $('iframe', this);
    try
{ if (frame.length > 0) { for ( var i = 0; i < frame.length; i++) { frame[i].contentWindow.document.write(''); frame[i].contentWindow.close(); } frame.remove(); if ($.browser.msie) { CollectGarbage(); } } }
catch (e) { } }; /** * 使panel和datagrid在載入時提示 * * * @requires jQuery,EasyUI * */ $.fn.panel.defaults.loadingMessage = '載入中....'; $.fn.datagrid.defaults.loadMsg = '載入中....'; /** * @author wfire * * @requires jQuery,EasyUI * * 通用錯誤提示 * * 用於datagrid/treegrid/tree/combogrid/combobox/form載入資料出錯時的操作
*/ var easyuiErrorFunction = function(XMLHttpRequest) { $.messager.progress('close'); // $.messager.alert('錯誤', XMLHttpRequest.responseText); // $.messager.confirm('錯 誤',XMLHttpRequest.responseText,function(r){ // if (r){ // parent.location.replace('login.jsp'); // } // }); }; $.fn.datagrid.defaults.onLoadError = easyuiErrorFunction; $.fn.treegrid.defaults.onLoadError = easyuiErrorFunction; $.fn.tree.defaults.onLoadError = easyuiErrorFunction; $.fn.combogrid.defaults.onLoadError = easyuiErrorFunction; $.fn.combobox.defaults.onLoadError = easyuiErrorFunction; $.fn.form.defaults.onLoadError = easyuiErrorFunction; /** * * @requires jQuery,EasyUI * * 為datagrid、treegrid增加表頭選單,用於顯示或隱藏列,注意:凍結列不在此選單中 */ var createGridHeaderContextMenu = function(e, field) { e.preventDefault(); var grid = $(this);/* grid本身 */ var headerContextMenu = this.headerContextMenu;/* grid上的列頭選單物件 */ if (!headerContextMenu) { var tmenu = $('<div style="width:100px;"></div>').appendTo('body'); var fields = grid.datagrid('getColumnFields'); for ( var i = 0; i < fields.length; i++) { var fildOption = grid.datagrid('getColumnOption', fields[i]); if (!fildOption.hidden) { $('<div iconCls="icon-ok" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu); } else { $('<div iconCls="icon-empty" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu); } } headerContextMenu = this.headerContextMenu = tmenu.menu({ onClick : function(item) { var field = $(item.target).attr('field'); if (item.iconCls == 'icon-ok') { grid.datagrid('hideColumn', field); $(this).menu('setIcon', { target : item.target, iconCls : 'icon-empty' }); } else { grid.datagrid('showColumn', field); $(this).menu('setIcon', { target : item.target, iconCls : 'icon-ok' }); } } }); } headerContextMenu.menu('show', { left : e.pageX, top : e.pageY }); }; $.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu; $.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu; /** * * @requires jQuery,EasyUI * * 擴充套件validatebox,新增驗證兩次密碼功能 */ $.extend($.fn.validatebox.defaults.rules, { eqPwd : { validator : function(value, param) { return value == $(param[0]).val(); }, message : '密碼不一致!' }, idcard : {// 驗證身份證 validator : function(value) { return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value); }, message : '身份證號碼格式不正確' }, minLength: { validator: function(value, param){ return value.length >= param[0]; }, message: '請輸入至少(2)個字元.' }, length:{validator:function(value,param){ var len=$.trim(value).length; return len>=param[0]&&len<=param[1]; }, message:"輸入內容長度必須介於{0}和{1}之間." }, phone : {// 驗證電話號碼 validator : function(value) { 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); }, message : '格式不正確,請使用下面格式:010-88888888' }, mobile : {// 驗證手機號碼 validator : function(value) { return /^(13|15|18)\d{9}$/i.test(value); }, message : '手機號碼格式不正確' }, intOrFloat : {// 驗證整數或小數 validator : function(value) { return /^\d+(\.\d+)?$/i.test(value); }, message : '請輸入數字,並確保格式正確' }, currency : {// 驗證貨幣 validator : function(value) { return /^\d+(\.\d+)?$/i.test(value); }, message : '貨幣格式不正確' }, qq : {// 驗證QQ,從10000開始 validator : function(value) { return /^[1-9]\d{4,9}$/i.test(value); }, message : 'QQ號碼格式不正確' }, integer : {// 驗證整數 validator : function(value) { return /^[+]?[1-9]+\d*$/i.test(value); }, message : '請輸入整數' }, age : {// 驗證年齡 validator : function(value) { return /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i.test(value); }, message : '年齡必須是0到120之間的整數' }, chinese : {// 驗證中文 validator : function(value) { return /^[\Α-\¥]+$/i.test(value); }, message : '請輸入中文' }, english : {// 驗證英語 validator : function(value) { return /^[A-Za-z]+$/i.test(value); }, message : '請輸入英文' }, unnormal : {// 驗證是否包含空格和非法字元 validator : function(value) { return /.+/i.test(value); }, message : '輸入值不能為空和包含其他非法字元' }, username : {// 驗證使用者名稱 validator : function(value) { return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value); }, message : '使用者名稱不合法(字母開頭,允許6-16位元組,允許字母數字下劃線)' }, faxno : {// 驗證傳真 validator : function(value) { 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); }, message : '傳真號碼不正確' }, zip : {// 驗證郵政編碼 validator : function(value) { return /^[0-9]\d{5}$/i.test(value); }, message : '郵政編碼格式不正確' }, ip : {// 驗證IP地址 validator : function(value) { return /d+.d+.d+.d+/i.test(value); }, message : 'IP地址格式不正確' }, name : {// 驗證姓名,可以是中文或英文 validator : function(value) { return /^[\Α-\¥]+$/i.test(value)|/^\w+[\w\s]+\w+$/i.test(value); }, message : '請輸入姓名' }, msn:{ validator : function(value){ return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value); }, message : '請輸入有效的msn賬號(例:abc@hotnail(msn/live).com)' } }); /** * * @requires jQuery,EasyUI * * 擴充套件tree,使其支援平滑資料格式 */ $.fn.tree.defaults.loadFilter = function(data, parent) { var opt = $(this).data().tree.options; var idFiled, textFiled, parentField; if (opt.parentField) { idFiled = opt.idFiled || 'id'; textFiled = opt.textFiled || 'text'; parentField = opt.parentField; var i, l, treeData = [], tmpMap = []; for (i = 0, l = data.length; i < l; i++) { tmpMap[data[i][idFiled]] = data[i]; } for (i = 0, l = data.length; i < l; i++) { if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) { if (!tmpMap[data[i][parentField]]['children']) tmpMap[data[i][parentField]]['children'] = []; data[i]['text'] = data[i][textFiled]; tmpMap[data[i][parentField]]['children'].push(data[i]); } else { data[i]['text'] = data[i][textFiled]; treeData.push(data[i]); } } return treeData; } return data; }; /** * * @requires jQuery,EasyUI * * 擴充套件treegrid,使其支援平滑資料格式 */ $.fn.treegrid.defaults.loadFilter = function(data, parentId) { var opt = $(this).data().treegrid.options; var idFiled, textFiled, parentField; if (opt.parentField) { idFiled = opt.idFiled || 'id'; textFiled = opt.textFiled || 'text'; parentField = opt.parentField; var i, l, treeData = [], tmpMap = []; for (i = 0, l = data.length; i < l; i++) { tmpMap[data[i][idFiled]] = data[i]; } for (i = 0, l = data.length; i < l; i++) { if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) { if (!tmpMap[data[i][parentField]]['children']) tmpMap[data[i][parentField]]['children'] = []; data[i]['text'] = data[i][textFiled]; tmpMap[data[i][parentField]]['children'].push(data[i]); } else { data[i]['text'] = data[i][textFiled]; treeData.push(data[i]); } } return treeData; } return data; }; /** * @author wfire * * @requires jQuery,EasyUI * * 擴充套件combotree,使其支援平滑資料格式 */ $.fn.combotree.defaults.loadFilter = $.fn.tree.defaults.loadFilter; /** * * @requires jQuery,EasyUI * * 防止panel/window/dialog元件超出瀏覽器邊界 * @param left * @param top */ var easyuiPanelOnMove = function(left, top) { var l = left; var t = top; if (l < 1) { l = 1; } if (t < 1) { t = 1; } var width = parseInt($(this).parent().css('width')) + 14; var height = parseInt($(this).parent().css('height')) + 14; var right = l + width; var buttom = t + height; var browserWidth = $(window).width(); var browserHeight = $(window).height(); if (right > browserWidth) { l = browserWidth - width; } if (buttom > browserHeight) { t = browserHeight - height; } $(this).parent().css({/* 修正面板位置 */ left : l, top : t }); }; $.fn.dialog.defaults.onMove = easyuiPanelOnMove; $.fn.window.defaults.onMove = easyuiPanelOnMove; $.fn.panel.defaults.onMove = easyuiPanelOnMove; /** * * @requires jQuery,EasyUI,jQuery cookie plugin * * 更換EasyUI主題的方法 * * @param themeName * 主題名稱 */ changeTheme = function(themeName) { var $easyuiTheme = $('#easyuiTheme'); var url = $easyuiTheme.attr('href'); var href = url.substring(0, url.indexOf('themes')) + 'themes/' + themeName + '/easyui.css'; $easyuiTheme.attr('href', href); var $iframe = $('iframe'); if ($iframe.length > 0) { for ( var i = 0; i < $iframe.length; i++) { var ifr = $iframe[i]; $(ifr).contents().find('#easyuiTheme').attr('href', href); } } $.cookie('easyuiThemeName', themeName, { expires : 7 }); }; serializeObject = function(form) { var o = {}; $.each(form.serializeArray(), function(index) { if (o[this['name']]) { o[this['name']] = o[this['name']] + "," + this['value']; } else { o[this['name']] = this['value']; } }); return o; }; /** * * 增加formatString功能 * * 使用方法:formatString('字串{0}字串{1}字串','第一個變數','第二個變數'); * * @returns 格式化後的字串 */ formatString = function(str) { for ( var i = 0; i < arguments.length - 1; i++) { str = str.replace("{" + i + "}", arguments[i + 1]); } return str; }; stringToList = function(value) { if (value != undefined && value != '') { var values = []; var t = value.split(','); for ( var i = 0; i < t.length; i++) { values.push('' + t[i]);/* 避免他將ID當成數字 */ } return values; } else { return []; } }; //$.ajaxSetup({ // type : 'POST', // error : function(XMLHttpRequest, textStatus, errorThrown) { // $.messager.progress('close'); // $.messager.alert('錯誤', errorThrown); // } //}); /** * @author * * @requires jQuery * * 判斷瀏覽器是否是IE並且版本小於8 * * @returns true/false */ wjc.isLessThanIe7 = function() { return ($.browser.msie && $.browser.version < 7); }; //時間格式化 wjc.dateFormat = function (format) { /* * eg:format="yyyy-MM-dd hh:mm:ss"; */ if (!format) { format = "yyyy-MM-dd hh:mm:ss"; } var o = { "M+" : this.getMonth() + 1, // month "d+" : this.getDate(), // day "h+" : this.getHours(), // hour "m+" : this.getMinutes(), // minute "s+" : this.getSeconds(), // second "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter "S" : this.getMilliseconds() // millisecond }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return format; };
複製程式碼