js 实现的左右多选控件


var sortitems = 1; // Automatically sort items within lists? (1 or 0)

function move(fbox, tbox) {
    fbox = document.getElementById(fbox);
    tbox = document.getElementById(tbox);

    for (var i = 0; i < fbox.options.length; i++) {
        if (fbox.options[i].selected && fbox.options[i].value != "") {

            if (exits(tbox, fbox.options[i].value)) {
                fbox.options[i].value = "";
                fbox.options[i].text = "";
                continue;
            }
            var no = new Option();
            no.value = fbox.options[i].value;
            no.text = fbox.options[i].text;
            tbox.options[tbox.options.length] = no;
            fbox.options[i].value = "";
            fbox.options[i].text = "";
        }
    }
    BumpUp(fbox);
    if (sortitems) SortD(tbox);
}

function moveall(fbox, tbox) {
    fbox = document.getElementById(fbox);
    tbox = document.getElementById(tbox);


    for (var i = 0; i < fbox.options.length; i++) {
        if (fbox.options[i].value != "") {
            if (exits(tbox, fbox.options[i].value)) {
                fbox.options[i].value = "";
                fbox.options[i].text = "";
                continue;
            }
            var no = new Option();
            no.value = fbox.options[i].value;
            no.text = fbox.options[i].text;
            tbox.options[tbox.options.length] = no;
            fbox.options[i].value = "";
            fbox.options[i].text = "";
        }
    }
    BumpUp(fbox);
    if (sortitems) SortD(tbox);
}

//检测HTMLSelect中是否有value项Option
function exits(HTMLSelect, value) {
    for (var i = 0; i < HTMLSelect.length; i++) {
        if (HTMLSelect[i].value == value) {
            return true;
        }
    }
    return false;
}

//把空值去掉并把下面的选项移到上面来
function BumpUp(box) {
    for (var i = 0; i < box.options.length; i++) {
        if (box.options[i].value == "") {
            for (var j = i; j < box.options.length - 1; j++) {
                box.options[j].value = box.options[j + 1].value;
                box.options[j].text = box.options[j + 1].text;
            }
            var ln = i;
            break;
        }
    }
    if (ln < box.options.length) {
        box.options.length -= 1;
        BumpUp(box);
    }
}

function SortD(box) {
    var temp_opts = new Array();
    var temp = new Object();
    for (var i = 0; i < box.options.length; i++) {
        temp_opts[i] = box.options[i];
    }

    for (var x = 0; x < temp_opts.length - 1; x++) {
        for (var y = (x + 1); y < temp_opts.length; y++) {
            if (temp_opts[x].text > temp_opts[y].text) {
                temp = temp_opts[x].text;
                temp_opts[x].text = temp_opts[y].text;
                temp_opts[y].text = temp;
                temp = temp_opts[x].value;
                temp_opts[x].value = temp_opts[y].value;
                temp_opts[y].value = temp;
            }
        }
    }

    for (var i = 0; i < box.options.length; i++) {
        box.options[i].value = temp_opts[i].value;
        box.options[i].text = temp_opts[i].text;
    }
}


/* 使用实例
<form ACTION="" METHOD="POST">
<table border="0">
<tr>
<td><select multiple size="7" name="list1" style="width:250px">
<option value="11"> item 1.1 </option>
<option value="12"> item 1.2 </option>
<option value="13"> item 1.3 </option>
</select></td>
<td>
<input type="button" value="    >>   " οnclick="moveall('list1','list2')" name="B3">
<br/>
<input type="button" value="    >   " οnclick="move('list1','list2')" name="B1">
<br/>
<input type="button" value="    <   " οnclick="move('list2','list1')" name="B2">
<br/>

<input type="button" value="    <<   " οnclick="moveall('list2','list1')" name="B4">
</td>
<td><select multiple size="7" name="list2" style="width:250px">
<option value="21"> item 2.1 </option>
<option value="22"> item 2.2 </option>
<option value="23"> item 2.3 </option>
</select></td>


</tr>
</table>
</form>*/


 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值