#项目常用jquery/easyui函数小结

##背景
项目中经常需要使用到一些功能,封装、重构、整理后形成代码沉淀,在此进行分享 ##代码 ```javascript
/**
* @author gaohuia
* @site http://www.zeroplace.cn/
* 使用方式:$("#fm").serializeObject();
*/ (function($){ //把表单序列化成对象
$.fn.extend({
serializeObject:function(){
if(this.length>1){
return false;
}
var arr=this.serializeArray();
var obj=new Object;
$.each(arr,function(k,v){
if(obj[v.name]) {//处理相同名称多个键值的情况,如传递checkbox多选值
obj[v.name]=obj[v.name]+','+v.value;
}
else {
obj[v.name]=v.value;
}
});
return obj;
},
extData:function(key,obj){ //扩展Dom节点上绑定的数据
var dd = this.data(key);
if(dd){
this.data(key,$.extend({},dd,obj));
}else{
this.data(key,obj);
}
return this;
},
/*
* 把form处理成 字符串,为对象或为数组
* */
encodeForm:function(type){//type:默认为字符串,1为对象,2为数组
var aR = [];
var aO = {};
$(":input[name]",this).each(function(){
if(this.value.length>0){
var pushVal;
switch(type){
case 1:
aO[this.name]=this.value;
break;
case 2:
aR.push({name:this.name,value:this.value});
break;
default:
aR.push([this.name,this.value].join("="));
}
}
})
return (1==type ? aO : (2==type ? aR : aR.join("&")));
}
}); $.extend({
unParam:function(str,ifdeCode){
//s_proid=0202&s_unitName=KQY&s_unitAddress=&s_theirArea=&s_theirStreet=&s_contactStaff=&s_legalName=&s_objtype=jywlb_xzxk 转化为对象
//参数str:需要转化的字符串,ifdeCode:true则表明需要对转化值进行decode处理
var r = {};
var units = str.split("&");
for(var i=0;i<units.length;i++){
var kv = units[i].split("=");
var val = kv[1].length>0 ? kv[1] : undefined;
val = (ifdeCode && val) ? decodeURIComponent(val) : val ;
if(r[kv[0]]){
r[kv[0]] = [r[kv[0]],val].join();
}else{
r[kv[0]]= val;
} }
return r;
},
/*
* 登记表布局的实现,
* 以body为底,一个计算大小的滚动center区域(id为center-layout),一个固定高度为30的底部区域(id为south-layout)
* 参数为真时检测适用条件
*/
applyLayout:function(ifDetect){
var scrollDom = $("#center-layout")
var southLayout = $("#south-layout");
if(ifDetect && (scrollDom.length<=0 ||southLayout.length<=0)){
return;//不适用于该布局
}
$("html").css({height: "100%",overflow: "hidden"}); scrollDom.height($('body').parent().innerHeight() - southLayout.outerHeight()-5); $('tr.list_colspan').bind('click.layout',function(){
$(this).nextUntil('tr.list_colspan').toggle(100);//点击分栏目的行会收缩/展开后面的行
}).filter("[close='true']").click()
}
})
})(jQuery); //所有的combobox都只能选择下拉
if($.fn.combo){
$.fn.combo.defaults.editable = false;
}
if($.fn.combobox){
$.fn.combobox.defaults.editable = false;
}
if($.fn.combotree){
$.fn.combotree.defaults.editable = false;
}
//日期框不可编辑
if($.fn.datebox){
$.fn.datebox.defaults.editable = false;
} if($.fn.datetimebox){
$.fn.datetimebox.defaults.editable = false;
} if($.fn.datagrid){
//给datagrid增加鼠标提示,显示其内容
var oriFunc = $.fn.datagrid.defaults.view.onAfterRender;
$.fn.datagrid.defaults.view.onAfterRender = function(tgt){
oriFunc(tgt);
$(tgt).datagrid("getPanel").find("div.datagrid-body").find("div.datagrid-cell").each(function(){
var $Obj = $(this)
$Obj.attr("title",$Obj.text());
})
} //给datagrid增加一个方法:改变列设置
/*
* @param {Object} jq
* @param {Object} opts:设置,以数组形式提供,[{field:必需,要设置的列;title:给列设置一个新标题,width:给列设置一个新宽度}]
* width似乎没有效果
*/
$.extend($.fn.datagrid.methods, {
setColumnOptions:function(jq, opts){
return jq.each(function(){
var grid = $(this);
var p = grid.datagrid("getPanel"); $.each(opts,function(optsIdx,optsVal){
if(optsVal.field){
var td = p.find("div.datagrid-header").find("td[field=" + optsVal.field + "]");
var gridOpts = grid.datagrid("getColumnOption",optsVal.field);
$.extend(gridOpts,optsVal);
} if(td && optsVal.title){
var oriText = td.text();
var textObj = td.find("span:contains('" + $.trim(oriText) + "')");
textObj.text(optsVal.title);
} if(td && optsVal.width){
var cell = p.find("td[field=" + optsVal.field + "]").find("div.datagrid-cell");
cell.width(optsVal.width);
}
})
});
},
/*
* 返回特定列的标题
* */
getColumnTitles:function(jq,opts){
var cols = $(jq).data("datagrid").options.columns;
var reAry = [];
if(cols.length<=0){
return reAry;
} for(var i=0;i<cols.length;i++){
var colsi = cols[i];
for(var j=0;j<colsi.length;j++){
var colsij = colsi[j];
reAry.push(/^all$/i.test(opts) ? colsij.title : ( colsij.hidden || colsij.chekcbox ? undefined : colsij.title));
}
}
return reAry;
}
});
}
``` ##示例及效果
在其他博文中整理后逐步发布

项目常用jquery/easyui函数小结的更多相关文章

  1. DoNet开源项目-基于jQuery EasyUI的后台管理系统

    博主在业余时间开发了一个简单的后台管理系统,其中用到了 jQuery EasyUI 框架,上次分享过系统布局,参考文章:jQuery EasyUI 后台管理系统布局分享,目前已完成系统的整体框架的搭建 ...

  2. Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件

    做个项目使用jquery  easyui来做前端,也许是对此不是很熟悉,总是发现一些不可理解的事件. 主要源代码如下: <script type="text/javascript&qu ...

  3. Jquery EasyUI中treegrid

    Jquery EasyUI中treegrid的中右键菜单和一般按钮同时绑定事件时的怪异事件 InChatter系统开源聊天模块前奏曲   最近在研究WCF,又因为工作中的项目需要,要为现有的系统增加一 ...

  4. 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享

    http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

  5. 【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享   在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的U ...

  6. 使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享 使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享    在开始讲解之前,我们先来看一下什 ...

  7. (转)使用Jquery+EasyUI 进行框架项目开发案例讲解之四---组织机构管理源码分享

    原文地址:http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码 ...

  8. (转)【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    原文地址:http://www.cnblogs.com/huyong/p/3334848.html 在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于 ...

  9. (转)使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享

    原文地址:http://www.cnblogs.com/huyong/p/3334848.html 在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于 ...

随机推荐

  1. MySQL 跳过同步错误方法

    最近MySQL 遇到了同步问题,现整理一下常遇到的错误的解决方法,备用. 方法一:手动设置动态参数 sql_slave_skip_counter 我常用的脚本: stop slave sql_thre ...

  2. MySQL之Join

    参见MySQL(以5.1为例)中官方手册:MySQL官方手册-JOIN 假设有以下几个表 t1 id book 1 java 2 c++ 3 php t2 id author 2 zhang 3 wa ...

  3. 多个电脑共用一个ssh

    比如我们有多个设备,但不想每个设备上生成一个ssh key,然后去github或其他网站上添加,那样的话,ssh key会比较多,搞起来会比较乱,所以我们想在不同的设备上使用同一个ssh. 做法是,我 ...

  4. URAL1049. Brave Balloonists

    1049 求约数的个数 质因子数的个数+1相乘 #include <iostream> #include<cstdio> #include<cstring> #in ...

  5. httpClient.execute之后一直等待

    可能的原因就是之前执行过一次execute,但是没有释放资源. hrp = httpClient.execute(req); //这句释放资源 hrp.getEntity().consumeConte ...

  6. PopupWindwo和AlertDialog的区别

      AlertDialog 是非阻塞式对话框:AlertDialog弹出时,后台还可以做事情:而PopupWindow是阻塞式对话框:PopupWindow弹出时, 程序会等 待,在PopupWind ...

  7. SHOI2008 题目总结

    感觉还是上海人出题水平高?这套题写得心旷神怡的...总之很难就是啦 由于我实在不适应博客园这种排版和字体..所以我的文章可能会特别难看大家见谅..说不定回头开发一个支持全局LaTeX的博客也不错?23 ...

  8. POJ (线段树) Who Gets the Most Candies?

    这道题综合性挺强的,又牵扯到数论,又有线段树. 线段树维护的信息就是区间中有多少个人没跳出去,然后计算出下一个人是剩下的人中第几个. 我在这调程序调了好久,就是那个模来模去的弄得我头晕. 不过题确实是 ...

  9. linux下编译软件通用方法(memcached为例)

    1)到软件的官网或其他网站下载软件的源码包 2)解压源码包,并切换到源码目录中 3)使用./configure --help查询配置帮助,里面可能会有安装指南(Installation directo ...

  10. 使用Spring Session做分布式会话管理

    在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将 ...