select2下拉框的显示及隐藏

select2下拉框,当输入框没有输入值的时候,点击输入框不显示所有数据,只有输入值了才把下拉框显示出来,由于没有找到官方提供的接口,所以用jq的一些方法实现。
首先在css里把下拉框先隐藏了

.select2 - container--classic.select2 - container--open.select2 - dropdown {
        display: none;
    }
.select2 - container--classic.select2 - container--open.select2 - container--below.select2 - selection--multiple {
        border - radius: 4 px;
        border - bottom: 1 px solid #5897fb;
    }

然后利用输入框的input事件,做js处理

//当输入框值改变时改变下拉框的显示隐藏状态
//$('#sendMultiBox')是父节点,利用事件代理的方法,因为此时输入框没有渲染出来
$('#sendMultiBox').on('input', '.select2 .select2-search__field', function () {
    var timer = setInterval(function () {
        if ($('.select2-container .select2-results__options')[0]) {
            clearInterval(timer);
            if ($('#el+.select2 .select2-search__field').val()) {
                $('.select2-container--classic.select2-container--open .select2-dropdown').css('display', 'block');
                $('.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple').css({
                    "border-radius": "4px",
                    "border-bottom": "1px solid #aaa;"
                });
            } else {
                $('.select2-container--classic.select2-container--open .select2-dropdown').css('display', 'none');
                $('.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple').css({
                    "border-radius": "4px",
                    "border-bottom": "1px solid #5897fb;"
                });
            }
        }
    }, 10);
});

当输入框内的值删除或者增加的时候也做一下下拉框显示隐藏处理

var saveData = []; //设置全局变量存储当前输入框数据
$('select').on("change", function () {
    var data = $('select').select2('data'); //获取输入框里的数据
    if (saveData.length > data.length) { //当输入框里数据减少时
        $('.select2-container--classic.select2-container--open .select2-dropdown').css('display', 'none'); //输入框添加时把下拉框隐藏
        $('.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple').css({
            "border-radius": "4px",
            "border-bottom": "1px solid #5897fb;"
        });
    } else if (saveData.length < data.length) { //当输入框里数据增加时
        $('.select2-container--classic.select2-container--open .select2-dropdown').css('display', 'none'); //输入框添加时把下拉框隐藏
        $('.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple').css({
            "border-radius": "4px",
            "border-bottom": "1px solid #5897fb;"
        });
    }
    saveData = data;
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值