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;
})