明霞山资源网 Design By www.htccd.com
由于最近项目的需求,需要做一个下拉选择框的插件,支持单选显示表单数据,多选显示表格数据,该插件主要运用了jQuery与jqgrid以及easyui。
下面给大家展示下效果图,如果大家感觉还不错,请参考实现代码:
多选:呈现列表
具体代码如下所示:
/**
*下拉框插件-chooseList
*调用插件的方式以及格式:
* 1.首先你需要创建一个div面板,给div定义ID
* 2.在你所需要的地方调用插件:
* 参数说明:
* $("#divID").chooseList({
* query_url :加载下拉框数据的URL,指定你所写编写的controller地址,如果URL为空则使用插件提供的默认URL
* divID:divID
* sidx:排序字段,默认罪犯编号
* sord:排序类型,默认desc
* postData: postData: {filters:JSON.stringify(filters)} 自定义查询条件
* filters的格式如下
* var rules = [];
rules.push({"field":"gydwName","op":"cn","data":"xxxx"});
var filters = {"groupOp":"AND","rules":rules};
isMultiselect:是否多选,默认单选false
*
* })
*
*
*/
(function ($) {
$.fn.extend({
chooseList: function (options) {
//产生随机数
var random =Math.floor(Math.random()*100000+1);
/**
* 自定义参数,需要使用其中的属性直接:customparams.属性名
*/
var customparams = {
resultObj : {},//存储单选选择的后的数据,返回给外界调用者使用
resultListObj : new map(),//存储多选选择的后的数据,返回给外界调用者使用
currentTag : this,//当前标签对象
formID: "form_"+random,
chooseID : "sel"+"_"+random,//下拉选择框的ID
gridID :"grid"+"_"+random,//dataGrid的ID
pager : "pager"+"_"+random,//分页ID
countRow :0//计数行号,默认为0
};
/**
* 参数和默认值
*/
var defaults = {
_search:"false",
//如果未传入url,则使用默认的url进行查询
query_url :contextPath + "/chooseCriminal",
sidx:"bh",//排序字段,默认根据罪犯的编号bh
sord: "desc",//排序类型:升序,降序 ,默认降序
isMultiselect:false,//是否多选,默认单选
};
/**
* 装载默然参数和传人的参数对象
*/
var options = $.extend(defaults, options);
/**
* 解析载入参数
* @param query_url 请求的地址
* @param flag 标识是第一次加载表格还是模糊查询加载表格数据
*/
var bindParams = function(query_url){
var params="";//存储解析的参数
for(var attr in options){
var key = attr;
var value = options[attr];
if(value != "" && !(value instanceof Object)&key!="query_url"&&key!="divID"&&key!=false){
params+=key+"="+value+"&"
}else if(value instanceof Object){
params+=$.param(value)+"&"
}else if(key=="_search"&&value==false){
params+=key+"=false&";
}
}
var finalParams =query_url+""+params.substring(0,params.length-1);
return finalParams;
};
/**
* 绑定选择罪犯combogrid
*/
var renderComboGrid = function(){
$("#"+customparams.chooseID).combogrid({
panelWidth: 500,
idField: 'bh',//id
textField: 'xm',//input显示值
pagination : true,//是否分页
pageSize: 10,//每页显示的记录条数,默认为10
rownumbers:true,//序号
url: bindParams(options.query_url),
method: 'get',
fitColumns: true,
columns: [[
{field:'xm',title:'姓名',width:80},
{field:'bh',title:'编号',width:120},
{field:'gydwName',title:'单位',width:80},
]],
keyHandler:{
query:function(keyword){//动态搜索
var value =keyword;
//装载动态输入参数
if(options.postData!=null&&options.postData!=undefined){
var oldRules = JSON.parse(options.postData.filters);
var newRules =[
{"field":"xm","op":"cn","data":value},
(oldRules.rules)[0]
];
var filters = {"groupOp":"AND","rules":newRules};
options = $.extend(defaults, {postData: {filters:JSON.stringify(filters)}});
}else{
var newRules =[
{"field":"xm","op":"cn","data":value}
];
var filters = {"groupOp":"AND","rules":newRules};
options = $.extend(defaults, {queryData: {filters:JSON.stringify(filters)}});
}
//将输入的值设置至输入框中
$("#"+customparams.chooseID).combogrid('setValue', value);
//重新请求后台加载表格
$("#"+customparams.chooseID).combogrid("grid").datagrid({url:bindParams(options.query_url)});
}
},
onSelect:function(){//选中事件
var bh= $("#"+customparams.chooseID).combogrid('grid').datagrid('getSelected').bh;//获取选中行数据的编号
//根据罪犯编号获取罪犯的详细信息ajax
$.ajax({
type : 'POST',
url : contextPath + "/chooseList/query",
data :{bh:bh},
success : function(data) {
//填充表单
PlatformUI.populateForm(customparams.formID, data);
//转换对象中包含时间类型的数值
convertDateObject(data);
//判断当前用户引用的是单选,还是多选
if(options.isMultiselect==false){//单选
$.extend(customparams.resultObj, data);
}else{//多选
addRowData(data);
$.extend(customparams.resultListObj, data);
}
}
});
}
});
};
/**
* 添加表格的行信息
* @param data 数据集
*/
var addRowData = function(data){
//判断当前对象是否已经存在resultesObj中,如果存在则不保存,反之则保存
if(!(customparams.resultListObj.containsKey(data.bh))){
customparams.resultListObj.put(data.bh,data);
//获取行数据
var rowData = {xm:data.xm, bh:data.bh, gydwName:data.gydwName};
customparams.countRow = customparams.countRow+1;
//添加行
$("#"+customparams.gridID).addRowData(customparams.countRow, rowData);
var totalRecord = customparams.resultListObj.size();//总条数
}else{
//提示
toastr.warning("数据已被选择!");
return;
}
};
/**
* 删除行指定列
* @param bh 编号
* @param rowId 行ID
*/
var deleteRow = function(bh,rowId){
//删除集合中的元素
customparams.resultListObj.remove(bh);
//删除表格中的行
$("#"+customparams.gridID).delRowData(rowId);
//更改行号
customparams.countRow = customparams.countRow - 1;
};
/**
* 转换对象时间戳类型的为yyyy-mm-dd字符串
* @parma data 数据
*/
var convertDateObject = function(data) {
if(data.rjrq!=null&&data.rjrq!=undefined){
$("#rjrq").val(DateToString(new Date(data.rjrq)));
}
if(data.csrq!=null&&data.csrq!=undefined){
$("#csrq").val(DateToString(new Date(data.csrq)));
}
if(data.dqxqqr!=null&&data.dqxqqr!=undefined){
$("#dqxqqr").val(DateToString(new Date(data.dqxqqr)));
}
if(data.dqxqzr!=null&&data.dqxqzr!=undefined){
$("#dqxqzr").val(DateToString(new Date(data.dqxqzr)));
}
};
/**
* 日期类型转换成字符串型格式yyyy-MM-dd
* @param DateIn 转换对象
*
*/
var DateToString = function(DateIn) {
return DateIn.getFullYear()
+ '-'
+ (DateIn.getMonth() + 1 >= 10 "";
html+="请选择:<input id='"+customparams.chooseID+"' style='width:200px'/>";
html+="<form id='"+customparams.formID+"'>";
html+="<table>";
html+="<tr>";
html+="<th>姓名:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px ' readonly='true' type='text' id='xm' name='xm' /></td>";
html+="<th>编号:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true' type='text' id='bh' name='bh' /></td>";
html+="<th>单位:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true' type='text' id='gydwName' name='gydwName' /></td>";
html+="<th>入监时间:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true' type='text' id='rjrq' name='rjrq' /></td>";
html+="<td rowspan='7' style='text-align: center'><img src='' width='140' height='200' alt='' /></td>";
html+="</tr>";
html+="<tr>";
html+="<th>出生日期:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='csrq' name='csrq' /></td>";
html+="<th>身份证号:</th>"
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='sfzh' name='sfzh' /></td>";
html+="<th>原判刑期:</th>"
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='xq' name='xq' /></td>";
html+="<th>当前刑期:</th>"
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='dqxq' name='dqxq' /></td>";
html+="</tr>";
html+="<tr>";
html+="<th>刑期起日:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='dqxqqr' name='dqxqqr' /></td>";
html+="<th>刑期止日:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='dqxqzr' name='dqxqzr' /></td>";
html+="<th>处遇等级:</th>";
html+=" <td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='cydjname' name='cydjname' /></td>";
html+="<th>分押类型:</th>"
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='fylxName' name='fylxName' /></td>";
html+="</tr>";
html+="<tr>";
html+="<th>余刑:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='yx' name='yx' /></td>";
html+="<th>军警经历</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='jjjlName' name='jjjlName' /></td>";
html+="<th>特管类别:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='tglb' name='tglb' /></td>";
html+=" <th>累惯犯:</th>"
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='lgfEnum' name='lgfEnum' /></td>"
html+="</tr>";
html+="<tr>";
html+="<th>是否老犯:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='isSflf' name='isSflf' /></td>";
html+="<th>是否病犯:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='issfbf' name='issfbf' /></td>";
html+="<th>是否残犯:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='issfcf' name='issfcf' /></td>";
html+="<th>是否危险犯:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='issfwxf' name='issfwxf' /></td>";
html+="</tr>";
html+="<tr>";
html+=" <th>职务犯:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='isZwf' name='isZwf' /></td>";
html+="<th>家庭住址:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='familyAddressDetail' name='familyAddressDetail' /></td>";
html+="<th>罪名:</th>";
html+="<td><input style='border-left:0px;border-top:0px;border-right:0px;border-bottom:1px 'readonly='true'type='text' id='accusationId' name='accusationId' /></td>";
html+=" </tr>";
html+=" </table>";
html+="</form>";
$(customparams.currentTag).append(html);
renderComboGrid();
};
/*******************渲染dtaGrid部分*********************/
/**
* 渲染dataGrid表格
*/
var renderGrid = function(){
var gridhtml ="";
gridhtml+="请选择罪犯:<input id='"+customparams.chooseID+"' style='width:200px'/>";
gridhtml+="<div>";
gridhtml+="<table id='"+customparams.gridID+"'></table> ";
gridhtml+="<div id='"+customparams.pager+"'></div>";
gridhtml+="</div>";
$(customparams.currentTag).append(gridhtml);
renderComboGrid();
initDataGrid();
};
/**
* 加载dataGrid表格数据
*/
var initDataGrid =function (){
$("#"+customparams.gridID).jqGrid({
datatype : 'local',
autowidth: true,
height:300,
colNames: ["姓名", "编号", "单位","操作"],
colModel: [
{ name: "xm", index:"xm",align:"center",width:50,sortable: true},
{ name: "bh", index:"bh", align:"center",width:50, sortable: true},
{ name: "gydwName", index:"gydwName", align:"center",width:50,sortable: true},
{ name: "customColumn",formatter:function(cellvalue, options, rowObject){
var obj = "{bh:" + "\"" + rowObject.bh + "\"" + ",rowId:" + "\"" + options.rowId + "\"" + "}";
var columnTemplate = "<span class='btn_orange innerDelBtn' name='"+ obj +"' >删除</span>"
return columnTemplate;
}, align:"center",width:50,search:false,sortable: false}
],
sortname: "bh",
sortorder: "desc",
rownumbers:true,//添加左侧行号
viewrecords: true,
gridview: true,
autoencode: true,
caption: "罪犯信息列表",
gridComplete: function(){
binCompleteEvent();
}
});
};
/**
* 给表格绑定加载完的事件
*/
var binCompleteEvent =function(){
//给操作栏绑定点击事件
$(".innerDelBtn").click(function(e){
var obj = eval("(" + $(e.target).attr("name") + ")");
deleteRow(obj.bh, obj.rowId);
});
//选中行鼠标变为手型
var ids=$("#"+customparams.gridID).jqGrid('getDataIDs');
for(var i = 0; i < ids.length ; i ++){
var id = ids[i];
$("#"+id).attr("style","cursor:pointer");
}
}
/*******************渲染dtaGrid部分结束*********************/
/**
* 根据类型渲染视图
*/
var renderView = function(){
//根据isMultiselect判断那种渲染视图
options.isMultiselect==true?renderGrid():renderPanelView();
};
/***
* 初始化入口
*/
renderView();
//使用三元表达式判断返回的应是单个对象还是多个对象
return options.isMultiselect==false?customparams.resultObj:customparams.resultListObj;
}
});
})(jQuery);
以上所述是小编给大家介绍的基于jQuery下拉选择框插件支持单选多选功能代码的相关内容,希望对大家有所帮助!
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。



