两个Form 多选列表控件效果

 1:多选列表控件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="keywords" content="option, multiple, select, form, " />
        <meta name="description"
            content="很多人对 form 默认的多选列表效果不太满意,因为选中和未选中的项目是在一起的,当选项较多时问题尤为明显,本文介绍的就是将可选项和选中项分开,并且可以通过操作按钮或者双击来移动选项,操作起来非常方便。" />
        <title> Form 多选列表控件效果</title>
    </head>
    <body>
        <br />
        <div id="example">
            <h3 id="example_title">
                多选列表控件效果
            </h3>
            <div id="example_main">
                <!--************************************* 实例代码开始 *************************************-->
                <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 {
   
}

fieldset {
    width: 500px;
    margin: 10px;
}
</style>
                <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++;
}
function selectItem()
{

var obj = document.getElementById('toBox');
for(var no=0;no<obj.options.length;no++){
alert(obj.options[no].value);
obj.options[no].selected = true;
}
}
</script>
                <form method="post"  οnsubmit="selectItem()">
                    <select multiple name="fromBox" id="fromBox">
                        <option value="3">
                            中国
                        </option>
                        <option value="4">
                            美国
                        </option>
                        <option value="6">
                            英国
                        </option>
                        <option value="1">
                            法国
                        </option>
                        <option value="5">
                            俄罗斯
                        </option>
                        <option value="2">
                            意大利
                        </option>
                        <option value="12">
                            韩国
                        </option>
                        <option value="13">
                            印度
                        </option>
                        <option value="11">
                            巴西
                        </option>
                    </select>
                    <select multiple name="toBox[]" id="toBox">
                       
                    </select>
                    <input type="button" οnclick="selectItem()" value="输出">
                </form>
                <script type="text/javascript">
                    createMovableOptions("fromBox","toBox",500,300,'可选国家','已选中的国家');
                </script>
                <p>
                    你可以通过点击操作按钮或者直接双击移动选项。
                </p>
                <!--************************************* 实例代码结束 *************************************-->
            </div>
        </div>
        <br />
    </body>
</html>
2:带Checkbox的列表框
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>带Checkbox的列表框 - 51windows.Net</title>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <style>
body,td {
    font-size: 12px;
    color: #000000;
}

.checkbox {
    width: 15px;
    height: 15px;
}

.cked {
    margin: 1px;
    padding: 2px;
    width: 100%;
    display: block;
    background-color: highlight;
    color: highlighttext;
}

.nock {
    margin: 1px;
    padding: 2px;
    width: 100%;
    display: block;
}
</style>
    <body>

        <SCRIPT LANGUAGE="JavaScript">
<!--
function HtmlEncode(text){
    return text.replace(/&/g, '&amp').replace(//"/g, '&quot;').replace(/</g, '<').replace(/>/g, '>');
}
function _checkbox(name,str,defv){
    //haiwa@2005-8-17
    //http://www.51windows.net
    var arr=str.split("^");
    var ck="",bc="";
    for(var i=0;i<arr.length;i++){
        var thisarr=arr[i].split("@=");
        if (thisarr[0].length>0){
            var t=(thisarr.length==2)?thisarr[0]:arr[i];
            var v=(thisarr.length==2)?thisarr[1]:arr[i];
            if((","+HtmlEncode(defv).toLowerCase()+",").replace(/ ,/g, ',').indexOf(","+v+",")!=-1){ck=" checked";cls="cked";}
            else{ck="";cls="nock";}
            var thisstr="<label class=/""+cls+"/" for=/"i_"+name+"_"+i+"/" id=/"l_"+name+"_"+i+"/">";
            thisstr+="<input class=/"checkbox/" onpropertychange=/"document.getElementById('l_"+name+"_"+i+"').className=(document.getElementById('i_"+name+"_"+i+"').checked)?'cked':'nock';/" οnclick=/"document.getElementById('l_"+name+"_"+i+"').className=(document.getElementById('i_"+name+"_"+i+"').checked)?'cked':'nock';/" type=/"checkbox/""+ck+" name=/""+name+"/" id=/"i_"+name+"_"+i+"/" value=/""+HtmlEncode(v)+"/" //> ";
            thisstr+=HtmlEncode(t)+"</label>";
            document.write(thisstr);
        }
    }
}
function _getv(o){
    var allvalue="";
    if(typeof(o)=="undefined"){return "";}
    if (typeof(o.length)=="undefined"){
        if(o.checked){return o.value+ ",";}else{return "";}
    }
    for(var i=0;i<o.length;i++){
        if(o[i].checked){
            allvalue +=o[i].value+",";
        }
    }
    return allvalue;
}


//-->
</SCRIPT>
        <form method="post" name="myform" action="?">
            <table border="0" >
                <tr>
                    <td>
                        <div
                            style="width:100px; height:200px; overflow: auto; border: 2px inset #FFFFFF;">
                            <SCRIPT LANGUAGE="JavaScript">
                                _checkbox("city","北京^山东^安徽^重庆^福建^甘肃^广东^广西^贵州^海南^河北^黑龙江","")
                        </SCRIPT>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td>
                       
                        <button οnclick='alert(_getv(document.myform.city));'>
                            alert值
                        </button>
                    </td>
                </tr>
               
            </table>
        </form>
    </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值