一个不错的 Form 多选列表控件效果
来源:互联网 发布:java jar 协议 编辑:程序博客网 时间:2024/05/15 12:39
很多人对 form 默认的多选框效果不太满意,因为选中和未选中的项目是在一起的,当选项较多时问题尤为明显,本文介绍的就是将可选项和选中项分开,并且可以通过操作按钮或者双击来移动选项,操作起来非常方便。
首先将下面的代码放置在页面的<head>标签内:
CSS:
Javascript:
然后将下面的代码放在页面的<body>标签内:
HTML:
配置方法:
(1)用类似下面的代码创建两个多选列表
HTML:
(2)用下面的javascript代码初始化设置:
Javascript:
参数说明如下:
"fromBox" - 第一个多选列表的id(<select multiple name="fromBox" id="fromBox">)
"toBox" - 第二个多选列表的id(<select multiple name="toBox[]" id="toBox">)
500 - 控件的总宽度
300 - 控件的总高度
"Available countries" - 第一个多选列表的显示名称
"Selected countries" - 第二个多选列表的显示名称
提交表单的方法:
当提交表单时,我们希望只有选中的选项值被提交,所以需要一些javascript代码进行一些小的处理。
先在form标签中加入提交事件的处理:
Code:
<FORM onsubmit="selectItem()">
再加一段javascript代码:
Javascript:
首先将下面的代码放置在页面的<head>标签内:
CSS:
<style type="text/css"> .multipleSelectBoxControl span{ /* Labels above select boxes*/ font-family:arial; font-size:11px; font-weight:bold; } .multipleSelectBoxControl div select{ /* Select box layout */ font-family:arial; height:100%; } .multipleSelectBoxControl input{ /* Small butons */ width:25px; } .multipleSelectBoxControl div{ float:left; } .multipleSelectBoxDiv </style>
Javascript:
<script type="text/javascript"> /************************************************************************************************************ (C) www.dhtmlgoodies.com, October 2005 This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website. Terms of use: You are free to use this script as long as the copyright message is kept intact. However, you may not redistribute, sell or repost it without our permission. Thank you! www.dhtmlgoodies.com Alf Magne Kalleland ************************************************************************************************************/ var fromBoxArray = new Array(); var toBoxArray = new Array(); var selectBoxIndex = 0; function moveSingleElement() { var selectBoxIndex = this.parentNode.parentNode.id.replace(/[^/d]/g,''); var tmpFromBox; var tmpToBox; if(this.tagName.toLowerCase()=='select'){ tmpFromBox = this; if(tmpFromBox==fromBoxArray[selectBoxIndex])tmpToBox = toBoxArray[selectBoxIndex]; else tmpToBox = fromBoxArray[selectBoxIndex]; }else{ if(this.value.indexOf('>')>=0){ tmpFromBox = fromBoxArray[selectBoxIndex]; tmpToBox = toBoxArray[selectBoxIndex]; }else{ tmpFromBox = toBoxArray[selectBoxIndex]; tmpToBox = fromBoxArray[selectBoxIndex]; } } for(var no=0;no<tmpFromBox.options.length;no++){ if(tmpFromBox.options[no].selected){ tmpFromBox.options[no].selected = false; tmpToBox.options[tmpToBox.options.length] = new Option(tmpFromBox.options[no].text,tmpFromBox.options[no].value); for(var no2=no;no2<(tmpFromBox.options.length-1);no2++){ tmpFromBox.options[no2].value = tmpFromBox.options[no2+1].value; tmpFromBox.options[no2].text = tmpFromBox.options[no2+1].text; tmpFromBox.options[no2].selected = tmpFromBox.options[no2+1].selected; } no = no -1; tmpFromBox.options.length = tmpFromBox.options.length-1; } } var tmpTextArray = new Array(); for(var no=0;no<tmpFromBox.options.length;no++){ tmpTextArray.push(tmpFromBox.options[no].text + '___' + tmpFromBox.options[no].value); } tmpTextArray.sort(); var tmpTextArray2 = new Array(); for(var no=0;no<tmpToBox.options.length;no++){ tmpTextArray2.push(tmpToBox.options[no].text + '___' + tmpToBox.options[no].value); } tmpTextArray2.sort(); for(var no=0;no<tmpTextArray.length;no++){ var items = tmpTextArray[no].split('___'); tmpFromBox.options[no] = new Option(items[0],items[1]); } for(var no=0;no<tmpTextArray2.length;no++){ var items = tmpTextArray2[no].split('___'); tmpToBox.options[no] = new Option(items[0],items[1]); } } function moveAllElements() { var selectBoxIndex = this.parentNode.parentNode.id.replace(/[^/d]/g,''); var tmpFromBox; var tmpToBox; if(this.value.indexOf('>')>=0){ tmpFromBox = fromBoxArray[selectBoxIndex]; tmpToBox = toBoxArray[selectBoxIndex]; }else{ tmpFromBox = toBoxArray[selectBoxIndex]; tmpToBox = fromBoxArray[selectBoxIndex]; } for(var no=0;no<tmpFromBox.options.length;no++){ tmpToBox.options[tmpToBox.options.length] = new Option(tmpFromBox.options[no].text,tmpFromBox.options[no].value); } tmpFromBox.options.length=0; } function createMovableOptions(fromBox,toBox,totalWidth,totalHeight,labelLeft,labelRight) { fromObj = document.getElementById(fromBox); toObj = document.getElementById(toBox); fromObj.ondblclick = moveSingleElement; toObj.ondblclick = moveSingleElement; fromBoxArray.push(fromObj); toBoxArray.push(toObj); var parentEl = fromObj.parentNode; var parentDiv = document.createElement('DIV'); parentDiv.className='multipleSelectBoxControl'; parentDiv.id = 'selectBoxGroup' + selectBoxIndex; parentDiv.style.width = totalWidth + 'px'; parentDiv.style.height = totalHeight + 'px'; parentEl.insertBefore(parentDiv,fromObj); var subDiv = document.createElement('DIV'); subDiv.style.width = (Math.floor(totalWidth/2) - 15) + 'px'; fromObj.style.width = (Math.floor(totalWidth/2) - 15) + 'px'; var label = document.createElement('SPAN'); label.innerHTML = labelLeft; subDiv.appendChild(label); subDiv.appendChild(fromObj); subDiv.className = 'multipleSelectBoxDiv'; parentDiv.appendChild(subDiv); var buttonDiv = document.createElement('DIV'); buttonDiv.style.verticalAlign = 'middle'; buttonDiv.style.paddingTop = (totalHeight/2) - 50 + 'px'; buttonDiv.style.width = '30px'; buttonDiv.style.textAlign = 'center'; parentDiv.appendChild(buttonDiv); var buttonRight = document.createElement('INPUT'); buttonRight.type='button'; buttonRight.value = '>'; buttonDiv.appendChild(buttonRight); buttonRight.onclick = moveSingleElement; var buttonAllRight = document.createElement('INPUT'); buttonAllRight.type='button'; buttonAllRight.value = '>>'; buttonAllRight.onclick = moveAllElements; buttonDiv.appendChild(buttonAllRight); var buttonLeft = document.createElement('INPUT'); buttonLeft.style.marginTop='10px'; buttonLeft.type='button'; buttonLeft.value = '<'; buttonLeft.onclick = moveSingleElement; buttonDiv.appendChild(buttonLeft); var buttonAllLeft = document.createElement('INPUT'); buttonAllLeft.type='button'; buttonAllLeft.value = '<<'; buttonAllLeft.onclick = moveAllElements; buttonDiv.appendChild(buttonAllLeft); var subDiv = document.createElement('DIV'); subDiv.style.width = (Math.floor(totalWidth/2) - 15) + 'px'; toObj.style.width = (Math.floor(totalWidth/2) - 15) + 'px'; var label = document.createElement('SPAN'); label.innerHTML = labelRight; subDiv.appendChild(label); subDiv.appendChild(toObj); parentDiv.appendChild(subDiv); toObj.style.height = (totalHeight - label.offsetHeight) + 'px'; fromObj.style.height = (totalHeight - label.offsetHeight) + 'px'; selectBoxIndex++; } </script>
然后将下面的代码放在页面的<body>标签内:
HTML:
<form method="post" action="multiple_select.html"> <select multiple name="fromBox" id="fromBox"> <option value="3">Finland</option> <option value="4">France</option> <option value="6">Mexico</option> <option value="1">Norway</option> <option value="5">Spain</option> <option value="2">United Kingdom</option> </select> <select multiple name="toBox" id="toBox"> <option value="12">Canada</option> <option value="13">Germany</option> <option value="11">United States</option> </select> </form> <script type="text/javascript"> createMovableOptions("fromBox","toBox",500,300,'Available countries','Selected countries'); </script> <p>You move elements by clicking on the buttons or by double clicking on select box items</p>
配置方法:
(1)用类似下面的代码创建两个多选列表
HTML:
<select multiple name="fromBox" id="fromBox"> <option value="3">Finland</option> <option value="4">France</option> <option value="6">Mexico</option> <option value="1">Norway</option> <option value="5">Spain</option> <option value="2">United Kingdom</option> </select> <select multiple name="toBox[]" id="topBox"> <option value="12">Canada</option> <option value="13">Germany</option> <option value="11">United States</option> </select>
(2)用下面的javascript代码初始化设置:
Javascript:
<script type="text/javascript"> createMovableOptions("fromBox","toBox",500,300,'Available countries','Selected countries'); </script>
参数说明如下:
"fromBox" - 第一个多选列表的id(<select multiple name="fromBox" id="fromBox">)
"toBox" - 第二个多选列表的id(<select multiple name="toBox[]" id="toBox">)
500 - 控件的总宽度
300 - 控件的总高度
"Available countries" - 第一个多选列表的显示名称
"Selected countries" - 第二个多选列表的显示名称
提交表单的方法:
当提交表单时,我们希望只有选中的选项值被提交,所以需要一些javascript代码进行一些小的处理。
先在form标签中加入提交事件的处理:
Code:
<FORM onsubmit="selectItem()">
再加一段javascript代码:
Javascript:
function selectItem() { var obj = document.getElementById('toBox[]'); for(var no=0;no<obj.options.length;no++){ obj.options[no].selected = true; } }
<SCRIPT type=text/javascript><!--google_ad_client = "pub-9963302116430362";google_ad_width = 468;google_ad_height = 15;google_ad_format = "468x15_0ads_al";//2006-12-02: codebitgoogle_ad_channel = "7590920726";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "669933";google_color_text = "666666";google_color_url = "7C6E3E";//--></SCRIPT><SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript></SCRIPT><SCRIPT>window.google_render_ad();</SCRIPT>
- 一个不错的 Form 多选列表控件效果
- 一个不错的效果
- 一个不错的幻灯片效果
- 一个不错的扑克牌控件
- 一个不错的日期控件
- 一个不错的TAB控件
- 一个不错的分页控件
- 发现的一个不错的音乐列表
- 一个不错的学习资源列表
- 一个不错的xen邮件列表网站
- 一个不错的jquery下拉列表插件
- 一个不错的对联广告的效果
- 一个效果不错的下拉菜单代码
- 一个非常不错的loading 效果
- 一个非常不错的loading 效果.借花献佛
- 一个非常不错的loading 效果.借花献佛
- 一个效果不错的Java数据库连接池
- 一个不错的flex效果网站
- 中海油基于IBM FileNet P8构筑海外业务管理系统
- gloox发消息
- C++/CLI的用途
- WebService开发实例 (Xfire+Spring+Hibernate)
- java面试题1
- 一个不错的 Form 多选列表控件效果
- Linux 下 (RedHat 9.0) JDK,Tomcat,MySQL的安装
- QTP调用WindowsAPI实例集
- URL重写
- java面试题2
- VC6.0无法打开文件和无法向工程添加文件的解决办法
- IIS的各种身份验证详细测试
- diet libc - a libc optimized for small size
- ToolStrip工具条