我正在开发一个具有多个多选的表单。我为此使用 Select2 库。
$(".chosen-select").select2({
allow_single_deselect: true,
width: "150px"
});
......
<select id="ship2" class="chosen-select" data-placeholder="Select vessel">
<option></option>
<option value="value1">title1</option>
<option value="value2">title2</option>
</select>
问题是,当我尝试获取选定的值时,它们会按照 <select>
中指定的顺序返回。元素,而不是它们被选择的顺序:
var selectedDayPorts = $('#ship2');
var dayPorts = selectedDayPorts.select2("val");
有没有办法让它们按正确的顺序排列?
最佳答案
有时这可能会有帮助。在尝试了几种方法之后,我想出了一个解决方法,使用我在用户 shashilo 上通过此链接获得的代码。 https://github.com/select2/select2/issues/3106
但我不得不做一些安排,因为它对我的案子并没有 100% 有效。 这是我的代码。
$(".select2").on("select2:select", function (evt) {
var element = evt.params.data.element;
var $element = $(element);
if ($(this).find(":selected").length > 1) {
var $second = $(this).find(":selected").eq(-1);
$second.after($element);
} else {
$element.detach();
$(this).prepend($element);
}
$(this).trigger("change");
});
在他提到的链接中
var $second = $(this).find(":selected").eq(-2);
但对我有用的是
var $second = $(this).find(":selected").eq(-1);
在我的例子中,即使取消选择项目,这也很有效。
关于jQuery-select2 - 按照选择的顺序获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680081/