easyui一些扩展功能

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lyz602986140/article/details/102579490

1.combo 扩展 clearBtn 属性显示清除按钮

(function ($) {
    var cache = $.fn.combo,
        cacheProperty = $.extend(true, {}, $.fn.combo);

    function hideIcon() {
        cache.apply(this, ['getIcon', 0]).css('visibility',
            'hidden')
    }

    function showIcon() {
        cache.apply(this, ['getIcon', 0]).css('visibility',
            'visible')
    }

    $.fn.combo = function (options, param) {
        if(typeof options === "string"){
            return cache.apply(this, [options, param]);
        }
        options = options || {};
        return $.each(this,function(){
            var result, me = $(this);
            result = cache.apply(me, [options, param]);
                $.each(me,function(){
                    var temp = $.data(this, "combo"),
                        isCreate = false;
                    if (temp&&temp.options&&temp.options.clearBtn) {
                        cache.call($(this),{
                            icons: [{
                                iconCls: 'icon-clear',
                                handler: function () {
                                    cache.call(me, "clear");
                                    if(options.afterClear) {
                                        options.afterClear.call($(this));
                                    }
                                }
                            }],
                            onChange: function (n,o) {
                                if (cache.call($(this), "getValue") !== "") {
                                    showIcon.call($(this));
                                } else {
                                    hideIcon.call($(this));
                                }
                                if(temp.options.onChangeSelf){
                                	temp.options.onChangeSelf(n,o);
                                }
                                
                            }
                        });
                        isCreate = true;
                    }
                    isCreate && (hideIcon.call($(this)),isCreate=false);
                });
            return result;
        });
    }
    $.extend($.fn.combo, cacheProperty);
    $.extend($.fn.combo.defaults, {clearBtn: false});
    //$.extend($.fn.combo.defaults, {onChangeSelf: function(){}});
})(jQuery);

2.easyui扩展校验规则

$.extend($.fn.validatebox.defaults.rules, {
    num : {
        validator : function(value) {
            return /^[1-9]\d*(\.\d+)?$/.test(value);
        },
        message : '只能輸入正數!'
    },
    notNull:{
        validator:function(value){
            return $.trim(value) !="";
        },
        message:"該輸入項為必輸項"
    },
    maxLength:{
        validator:function(value,params){
            var temp = value.replace(/[^\x00-\xff]/g,"");
             return temp.length + (value.length-temp.length)*3 <= params[0];
            /*return value.length<=params[0];*/
        },
        message:"輸入字符個數不能大於<b style='color:red'>{0}</b>個!"
     /*   message:"輸入字符個數不能大於<b style='color:red'>{0}</b>個!"*/
    },
    numRange:{
		validator:function(value,params){
			var result = false;
			if(params.length==3){
				if(params[2]===0){
					if(value.indexOf(".")!=-1){
						params[2]="只能輸入<b style='color:red'>" + params[0] + "-" + params[1] + "</b>之間的整數!";
						return false;
					}
				}
				params.pop();
			}
			if(params.length==2){
				result = value-0 >=params[0] && value-0<=params[1];
				params.push("輸入數字範圍應該在<b style='color:red'>" + params[0] + "-" + params[1] + "</b>之間!");
			}else if(params.length == 1) {
				result = value-0 <= params[0];
				params.push("");
				params.push("輸入數字不能大於<b style='color:red'>"+ params[0] +"</b>!");
			}else{
				params.push("");
				params.push("");
				params.push("");
				params[2]="驗證規則錯誤!";
			}
			return result;
		},
		message:"{2}"
	},
    invalidChar:{
        validator:function(value) {
            //[`~!#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&mdash;—|{}【】‘;:”“'。,、?]
            var pattern = new RegExp("[`~!#$%^&*()=|{}':;',\\[\\]<>/?~!#¥……&*()—|{}【】‘;:”“'。,、?]");
            return !pattern.test(value);
        },
        message:"不能包含<b style='color:red'>~!#$%¥^&*()=|</b>等特殊字符!"
    },
	phone: {    
        validator: function(value,param){
        	if(/^1\d{10}$/.test(value)){
	            return true;
        	}else{
        		return false;
        	}
        },    
        message: '請輸入11位手機號碼'
    },
    minLength: {    
        validator: function(value,param){
        	return value.length == param[0];
        },    
        message: '請輸入{0}位數字'
    }
});

3.easyui扩展动态添加删除datagrid编辑器

//扩展datagrid:动态添加删除editor
$.extend($.fn.datagrid.methods, {
	addEditor: function (jq, param) {
		if (param instanceof Array) {
			$.each(param, function (index, item) {
				var e = $(jq).datagrid('getColumnOption', item.field);
				e.editor = item.editor;
			});
		} else {
			var e = $(jq).datagrid('getColumnOption', param.field);
			e.editor = param.editor;
		}
	},
	removeEditor: function (jq, param) {
		if (param instanceof Array) {
			$.each(param, function (index, item) {
				var e = $(jq).datagrid('getColumnOption', item);
				e.editor = {};
			});
		} else {
			var e = $(jq).datagrid('getColumnOption', param);
			e.editor = {};
		}
	}
});
使用:
dg.datagrid('addEditor', [ {
				field : 'controlNo',
				editor : {
					type : 'textbox',
					options : {
						validType : 'maxLength[30]'
					}
				}
} ]);

4.easyui combobox添加搜索功能

//進出口岸
		impexpPortCodeCombox=$("#impexpPortCode").combobox({
			url:ctx+'/businessDictionaryController.do?action=getComboBoxList&type=IMPEXP_PORT',
			valueField:'id',textField:'text',editable:true,required:true,width:240,clearBtn:true,panelHeight: 200,hasDownArrow:false,
			filter: function(q, row){
                var opts = $(this).combobox('options');
                return row[opts.valueField].indexOf(q) >= 0;
            },
			onSelect:function(value){
				$("#impexpPort").val(value.text);
			},
			onLoadSuccess:function(){
				if(master && master.impexpPortCode){
					impexpPortCodeCombox.combobox('select',master.impexpPortCode);
				}
			},
			
			onHidePanel:function onComboboxHidePanel() {
		        var el = $(this);
		        el.combobox('textbox').focus();
		        //檢查錄入內容是否在數據里
		        var opts = el.combobox("options");
		        var data = el.combobox("getData");
		        var value = el.combobox("getValue");
		        //有高亮選中的項目,則不進一步處理
		        var panel = el.combobox("panel");
		        var items = panel.find(".combobox-item-selected");
		        if (items.length > 0) {
		            var values = el.combobox("getValues");
		            el.combobox("setValues", values);
		            var text =  el.combobox("getText");
		            $("#fm_equipmentName").val(text);
		            return;
		        }
		        var allowInput = opts.allowInput;
		        if (allowInput) {
		            var idx = data.length;

		            data[idx] = [];
		            data[idx][opts.textField] = value;
		            data[idx][opts.valueField] = value;
		            el.combobox("loadData", data);
		        } else {
		            // 不允許錄入任意項,則清空
		            el.combobox("clear");
		        }
		    }
		});

猜你喜欢

转载自blog.csdn.net/lyz602986140/article/details/102579490