我正在开发一个包含多个选择的表单。为此,我使用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");
有什么办法能让他们得到正确的顺序吗?
发布于 2016-04-13 06:41:11
我没有找到一种使select2按正确的顺序存储值的方法,因此我最终为每个select2字段创建了隐藏的输入字段,并在添加/删除新值时相应地更新它。
发布于 2016-09-25 16:32:13
有时候这可能会有帮助。在尝试了几种方法之后,我通过在用户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);
在我的例子中,即使是取消选举项目,这也很有效。
发布于 2014-03-16 18:55:55
您可以使用:
var dayPorts = selectedDayPorts.select2("data");
得到价值:
alert(dayPorts[0]['id']);
alert(dayPorts[0]['text']);
https://stackoverflow.com/questions/21680081
复制相似问题