jQuery-select2 - 按照选择的顺序获取值

标签 jquery select multi-select jquery-select2

我正在开发一个具有多个多选的表单。我为此使用 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/

相关文章:

javascript - 更改 <option> 的 .html() 会将 <option> 的 selectedIndex 属性从 '-1' 重置为 '0'

javascript - Jquery 中的信用卡到期日期验证

javascript - 如何传后台:url dynamically using javascript to css?

javascript - 使用 casperjs 在表单上设置选择

jquery - 使用 jqgrid 的列选择器和 Eric Hynd 的多重选择

java - PreferenceFragment.findPreference 总是返回 NULL

javascript - jQuery add() 替代性能

jQuery 返回选择列表中的第一个匹配项

php - 根据另一个下拉列表中的所选值限制日期

mysql - 在 ON 值上带有前缀的 SQL 连接