jquery --- > 多选下拉框的移动(穿梭框)

效果如下:
在这里插入图片描述

几个注意地方:
1.多选下拉框需要添加 multiple
2.获取选中的元素KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲id option:selec…(#id option:not(:selected))

下面是代码的各个部分实现, 方便引用,最后是总体代码,方便理解

添加选中到右边:

// 添加选中到右边
$('#add').click(()=>{
        let $options = $('#select1 option:selected')
        let $remove = $options.remove();
        $('#select2').append($remove);
})

添加未选到右边:

// 添加未选到右边
$('#add_not').click(()=>{
    let $options = $('#select1 option:not(:selected)')
    let $remove = $options.remove();
    $('#select2').append($remove);
})

全部添加到右边:

// 全部添加到右边
$('#add_all').click(()=>{
    let $remove = $('#select1 option').remove()
    $('#select2').append($remove);
})

整体代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
    .content{
        display: inline-block;
        margin-left:15px;
    }
    div span{
        display: block;
        margin-left:-15px;
    }
    #add,#add_all,#add_not,#remove,#remove_all,#remove_not{
        cursor: pointer;
    }
    #select1{
        width: 100px;
        height: 160px;
    }
    #select2{
       width:100px;
       height:160px;
    }
    
</style>
</head>
<body>

<div class="content">
    <select multiple id="select1">
        <option value="1">选项1</option>
        <option value="2">选项2</option>
        <option value="3">选项3</option>
        <option value="4">选项4</option>
        <option value="5">选项5</option>
        <option value="6">选项6</option>
        <option value="7">选项7</option>
        <option value="8">选项8</option>
    </select>
    <div>
        <span id="add">选中添加到右边&gt;&gt;</span>
        <span id="add_not">添加未选到右边&gt;&gt;</span>
        <span id="add_all">全部添加到右边&gt;&gt;</span>
    </div>
</div>
<div class="content" style="margin-left:30px;">
    <select multiple id="select2" >
    </select>
    <div>
        <span id="remove">&lt;&lt;选中删除到左边</span>
        <span id="remove_not">&lt;&lt;添加未选到左边</span>
        <span id="remove_all">&lt;&lt;全部删除到左边</span>
    </div>
</div>

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script>
$(function(){
    // 添加选中到右边
    $('#add').click(()=>{
        let $options = $('#select1 option:selected')
        let $remove = $options.remove();
        $('#select2').append($remove);
    })
    // 添加未选到右边
    $('#add_not').click(()=>{
        let $options = $('#select1 option:not(:selected)')
        let $remove = $options.remove();
        $('#select2').append($remove);
    })
    // 全部添加到右边
    $('#add_all').click(()=>{
        let $remove = $('#select1 option').remove()
        $('#select2').append($remove);
    })
    // 删除选中到左边
    $('#remove').click(()=>{
        let $options = $('#select2 option:selected')
        let $remove = $options.remove();
        $('#select1').append($remove);
    })
    // 删除未选到左边
    $('#remove_not').click(()=>{
        let $options = $('#select2 option:not(:selected)')
        let $remove = $options.remove();
        $('#select1').append($remove);
    })
    // 全部删除到左边
    $('#remove_all').click(()=>{
        let $remove = $('#select2 option')
        $('#select1').append($remove);
    })
})
</script>

</body>
</html>

参考《锋利的jquery》P149~P151

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xm-select 是一个基于 layui 的下拉框组件,可以实现多选、搜索、异步加载等功能。下面是一个简单的示例代码: ```html <div class="layui-form-item"> <label class="layui-form-label">多选下拉框</label> <div class="layui-input-block"> <select xm-select="demo2" xm-select-max="3" xm-select-search xm-select-skin="default" name="city[]" lay-verify="required" multiple> <option value="0">北京</option> <option value="1">上海</option> <option value="2">广州</option> <option value="3">深圳</option> <option value="4">杭州</option> <option value="5">南京</option> <option value="6">武汉</option> <option value="7">成都</option> </select> </div> </div> ``` 其中,`xm-select` 属性指定了下拉框的 ID,`xm-select-max` 属性指定了最多可选项数,`xm-select-search` 属性表示开启搜索功能,`xm-select-skin` 属性指定了皮肤样式,`multiple` 属性表示开启多选。 在 JavaScript 中,我们需要使用 `xmSelect` 函数初始化下拉框,并设置各种配置项: ```javascript layui.use(['xmSelect'], function(){ var xmSelect = layui.xmSelect; var demo2 = xmSelect.render({ el: '#demo2', name: 'city', layVerify: 'required', filterable: true, searchPlaceholder: '请选择城市', tips: '最多选择3个城市', max: 3, data: [{ name: '北京', value: 0 }, { name: '上海', value: 1 }, { name: '广州', value: 2 }, { name: '深圳', value: 3 }, { name: '杭州', value: 4 }, { name: '南京', value: 5 }, { name: '武汉', value: 6 }, { name: '成都', value: 7 }] }); }); ``` 其中,`el` 属性指定了下拉框的 ID,`name` 属性指定了提交表单时的参数名,`layVerify` 属性指定了表单验证规则,`filterable` 属性表示开启搜索功能,`searchPlaceholder` 属性指定了搜索的提示文本,`tips` 属性指定了超出可选项数时的提示文本,`max` 属性指定了最多可选项数,`data` 属性指定了下拉框的选项数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值