• 芯片是汽车产业发展的基石  专家呼吁建立"汽车芯片智库" 2019-06-13
  • “高深文学创作回顾研讨会”在北京举行 2019-06-13
  • 江苏专项督查基础教育问题 择校热、大班额成重点 2019-06-08
  • 14599元!索尼A7M3发布:续航翻番、支持4K视频 2019-06-08
  • 首页 春城壹网 七彩云南 一网天下 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-22
  • 密印“农禅”:何以在蛮荒之地举起文明火把(图) 2019-05-18
  • 20180531 袁隆平:海水稻打破纪录,杂交稻走向全球 2019-05-17
  • 晋城:八项重点打好水污染防治攻坚战 2019-05-15
  • 法国装置艺术家将一部老旧房车改造成移动游泳池 2019-05-13
  • 习近平致信祝贺人民日报创刊70周年 2019-05-10
  • 诗经讲演录:男子如何从好色转为好德? 2019-05-10
  • 中国外交部:就朝美领导人会晤发表声明 2019-05-06
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-05-06
  • 浙江小学生北大行 梦想教育从小开始 2019-04-27
  • 欢迎访问

    云南快乐十分前三结果:云南鼎浩信息技术有限公司官方网站,云南网站建设诚信品牌!

    DING HAO COLUMN 鼎浩专栏

    鼎浩的一些分享
    Sharing from Ding Hao

    jQuery实现列表框双向选择操作

    来源:云南11选五走势图500期     2013年07月02日17:02
    字号:T|T

    云南11选五走势图500期 www.a-mcl.com 对列表框的操作经常碰到过这样的应用:从左侧的列表框中选中要选的项添加到右侧列表框中,然后提交最终选择的项,对误操作而选中的项还可以执行移除操作。在很多系统中应用比如说求职网站的选择意向工作地区,QQ好友管理添加好友到组。

    本站在前面有文章介绍了jquery的一个插件multiselect2side的应用Multiselect:操作多选列表框,但是我在实际应用中遇到的问题,该插件就不好使了,比如从外部实时加载查询的数据,重复添加问题,以及验证最终是否选中项。

    查看演示DEMO 下载源码

    本文将用实例来讲解使用jQuery实现左右列表框的操作,主要有以下效果:

    • 通过左右按钮向右侧列表框添加项或移除项操作。
    • 通过双击两边列表框里的项可以进行添加或移除项。
    • 获取右侧列表框里的选项值。

    XHTML

    待选区

    王新安 - 13800138000李密 - 13800138001姜瑜 - 13800138002钱书记 - 13800138004

    >

    <

    已选区

    页面由左右两个列表框以及操作按钮项组成。通过CSS来控制三者并排一行。

    CSS

    .select_side{float:left; width:200px}
    select{width:180px; height:120px}
    .select_opt{float:left; width:40px; height:100%; margin-top:36px}
    .select_opt p{width:26px; height:26px; margin-top:6px; background:url(arr.gif) no-repeat;
     cursor:pointer; text-indent:-999em}
    .select_opt p#toright{background-position:2px 0}
    .select_opt p#toleft{background-position:2px -22px}

    我设置了两个列表框都左浮动float:left,同时将操作按钮项也左浮动,主要就使得三者横向排列。值得注意是,在设置操作按钮时,我使用了一张背景图片,这张图片包括了左右两个方向箭头的按钮,如下图,然后通过background-position来定位图片的位置,这个方法目前已经在很多网站中得到应用。

    按钮图片

    jQuery

    首先,绑定向右的方向建按钮的click事件,当单击按钮时,左侧列表框选中的项会添加到右侧列表框中,完成添加的操作。

    var leftSel = $("#selectL");
    var rightSel = $("#selectR");
    $("#toright").bind("click",function(){		
    	leftSel.find("option:selected").each(function(){
    		$(this).remove().appendTo(rightSel);
    	});
    });

    同样,绑定向左的方向建按钮的click事件,当单击按钮时,右侧列表框选中的项会添加到左侧列表框中,完成移除的操作。

    $("#toleft").bind("click",function(){		
    	rightSel.find("option:selected").each(function(){
    		$(this).remove().appendTo(leftSel);
    	});
    });

    接下来,需要完成双击选择事件,当双击该项时,该项立即从该列表框中移除,并添加到与之相对的列表框中。

    leftSel.dblclick(function(){
    	$(this).find("option:selected").each(function(){
    		$(this).remove().appendTo(rightSel);
    	});
    });
    rightSel.dblclick(function(){
    	$(this).find("option:selected").each(function(){
    		$(this).remove().appendTo(leftSel);
    	});
    });

    以上代码是有点多,但是非常直观,而且非常容易理解,有了这些操作后,就能对列表框的值进行随心所欲的控制了。

    我们知道,后台程序要获取选择框的值,只有当选择框选中了项,后台才能获取提交的选项的值,但是问题就出在我们这个列表框有移除的操作,当用户执行了移除操作时,右侧列表框中本来已选中的项全部取消选中状态,这时再去提交,后台是获取不到提交的选项值的。那么我们应该处理的是,不管右侧的项是否选中,我们都认为右侧列表框为选中的项,事实也是如此,这样我们只需将右侧选择框中的项组成一个字符串或数组提交给后台就OK??创耄?

    $("#sub").click(function(){
    	var selVal = [];
    	rightSel.find("option").each(function(){
    		selVal.push(this.value);
    	});
    	selVals = selVal.join(",");
    	//selVals = rightSel.val();
    	if(selVals==""){
    		alert("没有选择任何项!");
    	}else{
    		alert(selVals);
    	}
    });

    最终得到的结果是一串以“,”号隔开的字符串。

    客服中心
    点击进行在线咨询

    QQ咨询 咨询QQ:79929313 咨询QQ:88139574 咨询QQ:122790803

    咨询热线:0871-63399840

    客服热线:0871-63523332

    客服中心 客服中心
  • 芯片是汽车产业发展的基石  专家呼吁建立"汽车芯片智库" 2019-06-13
  • “高深文学创作回顾研讨会”在北京举行 2019-06-13
  • 江苏专项督查基础教育问题 择校热、大班额成重点 2019-06-08
  • 14599元!索尼A7M3发布:续航翻番、支持4K视频 2019-06-08
  • 首页 春城壹网 七彩云南 一网天下 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-22
  • 密印“农禅”:何以在蛮荒之地举起文明火把(图) 2019-05-18
  • 20180531 袁隆平:海水稻打破纪录,杂交稻走向全球 2019-05-17
  • 晋城:八项重点打好水污染防治攻坚战 2019-05-15
  • 法国装置艺术家将一部老旧房车改造成移动游泳池 2019-05-13
  • 习近平致信祝贺人民日报创刊70周年 2019-05-10
  • 诗经讲演录:男子如何从好色转为好德? 2019-05-10
  • 中国外交部:就朝美领导人会晤发表声明 2019-05-06
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-05-06
  • 浙江小学生北大行 梦想教育从小开始 2019-04-27