首页 > 解决方案 > Select2 在外部单击时不会关闭选择框(closeOnSelect=false)

问题描述

JSFiddle:http: //jsfiddle.net/xpvt214o/776660/

When the choice box is open, if you try clicking anywhere outside on the level of the choice box , it doesn't get closed. 但是,如果您在当前选择线的级别上单击外部,则它确实会关闭。

执行任何外部单击时,包括在选择框级别上,如何强制关闭 Select2 选择框?

PS我正在使用该closeOnSelect: false选项在选择过程中保持选择框始终打开-但它仍应在外部单击时关闭,

$('#dropdown').select2({
    closeOnSelect: false
});

另一个类似的问题-当 closeonselect 为 false 时关闭 select2 on click away

标签: jqueryjquery-select2

解决方案


不知道是什么导致了问题,但是将其添加到您的 CSS 中会“修复”它

选择 2 问题 4939

html,
body{
  height: 100%;
}

更新代码

/* Scroll CurrSel SPAN to bottom on every Select2 Select event */
$('#dropdown').on("select2:selecting", function(e) {
  var currselspan = $('#dropdown').next().find('.select2-selection--multiple').first();
  console.log('scrollTop = ' + $(currselspan).scrollTop() + ' scrollHeight = ' + $(currselspan).prop('scrollHeight'));
  $(currselspan).scrollTop($(currselspan).prop('scrollHeight'));
});



$('#dropdown').select2({
  closeOnSelect: false,
});
.select2-selection--multiple {
  height: 2rem;
  max-height: 2rem;
  overflow: auto;
}

html,
body {
  height: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.full.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet" />
<div style="width: 50%">
  <select id="dropdown" style="width: 100%" multiple>
    <option>TEST ELEMENT 1</option>
    <option>TEST ELEMENT 2</option>
    <option>TEST ELEMENT 3</option>
    <option>TEST ELEMENT 4</option>
    <option>TEST ELEMENT 5</option>
    <option>TEST ELEMENT 6</option>
    <option>TEST ELEMENT 7</option>
    <option>TEST ELEMENT 8</option>
    <option>TEST ELEMENT 9</option>
    <option>TEST ELEMENT 10</option>
    <option>TEST ELEMENT 11</option>
    <option>TEST ELEMENT 12</option>
    <option>TEST ELEMENT 13</option>
  </select>
</div>


推荐阅读