原文链接:https://my.oschina.net/sumweb/blog/1593892

在一个项目中,我使用了它的AJAX搜索和选择,但发现一个问题,项目需要对选择的内容保留它添加时相应的排序,比如one/two/three,AJAX添加选择的时候如果是three,two,one,我希望它保留这个顺序,然后提交到后台数据库,而select2在已经选过内容的情况下,是按原来内容顺序做排序的,这就导致无法修改排序。百度后,没有找到解决办法,GOOGLE搜索关键词“select2 multiple sort”,找到了很多关于这个问题的材料,以及一些相关的问题:

https://github.com/select2/select2/issues/3106,这个资料,讨论了比较多,其中有人放了它的处理代码,链接是http://jsbin.com/cizehajema/2/edit?html,js,output,代码是:

$("select").select2({tags: true //这个参数的效果应该是,自定义内容选项卡
});$("select").on("select2:select", function (evt) {var element = evt.params.data.element;var $element = $(element);window.setTimeout(function () {  if ($("select").find(":selected").length > 1) {var $second = $("select").find(":selected").eq(-2);$element.detach();$second.after($element);} else {$element.detach();$("select").prepend($element);}$("select").trigger("change");}, 1);
});$("select").on("select2:unselect", function (evt) {if ($("select").find(":selected").length) {var element = evt.params.data.element;var $element = $(element);$("select").find(":selected").after($element); }
});

经过测试这一段代码,对没有使用AJAX获取选项数据的,即固定的option条目,它能解决问题。

后来又找到了更为简洁的代码,如下:

$("select").on("select2:select", function (evt) {var element = evt.params.data.element;var $element = $(element);$element.detach();$(this).append($element);$(this).trigger("change");
});

即重写了它的select2:select事件,处理完后,触发change事件。
上面的代码都能解决固定的option条目,但对于AJAX,出现了另外的错误情况。后来通过对HTML的查看发现,select2会把AJAX选择的项,会在select标签中生成option,但在去掉某个选项时,它并没有删除这个option,OK,那就对上面的select2:unselect事件做下修改,代码如下:

$("select").on("select2:unselect", function (evt) {var element = evt.params.data.element;var $element = $(element);$element.remove();
});

测试后,问题得到解决。

反思下,select2这里默认这样来处理,应该是在固定的选项内容时,不能删除select标签中option,去读一下它的unselect事件,可能可以找到对应的参数来修改这样的处理方式,时间关系,先暂停在此。欢迎留言探讨指正。

相似的问题:

修改排序:https://stackoverflow.com/questions/34788259/sort-by-name-in-select2

总结:

在初始化select2以后,在项目后面添加下面这两段,将 #select换为对应的domid即可解决问题

$("#select").on("select2:select", function (evt) {var element = evt.params.data.element;var $element = $(element);$element.detach();$(this).append($element);$(this).trigger("change");
});
$("#select").on("select2:unselect", function (evt) {var element = evt.params.data.element;var $element = $(element);$element.remove();
});

select2多选框无法手动排序问题[转载]相关推荐

  1. TreeView的复选框隐藏 重新整理

    CheckBoxes 为真 代码如下 using System.Runtime.InteropServices; #region 树的复选框隐藏private const int TVIF_STATE ...

  2. 多选框向后台传值,多选框的回显,对多选框的各种操作

    1.多选框的回显: js:$(     function(){     var checkBoxAll =$("input[name^='checkbox_']");//获取前缀为 ...

  3. DEV控件中GridView中的复选框与CheckBox实现联动的全选功能

    最初的界面图如图1-1(全选框ID: cb_checkall  DEV控件名称:gcCon ): 要实现的功能如下图(1-2  1-3  1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...

  4. Element表格嵌入复选框以及单选框

    1,element 表格嵌入CheckBox 效果图如下:  2,element结合checkBox实现单选效果如下: html代码: <template><div><p ...

  5. GridControl 选择列、复选框全选(上)

    说明: GirdControl 中加入一列,这一列不是写在数据库中的,而是代码中加入的. 图示: 底层类代码: #region GridControl 全选/// <summary>/// ...

  6. 个人永久性免费-Excel催化剂功能第58波-批量生成单选复选框

    插件的最大威力莫过于可以把简单重复的事情批量完全,对日常数据采集或打印报表排版过程中,弄个单选.复选框和用户交互,美观的同时,也能保证到数据采集的准确性,一般来说用原生的方式插入单选.复选框,操作繁琐 ...

  7. iOS复选框——高雅的BEMCheckBox

    GitHub地址:BEMCheckBox star:1800+ BEMCheckBox 是一个开源库,可以轻松地为iOS创建漂亮,高度可定制的,有动画效果的复选框. 要求 需要 iOS 7或更高版本, ...

  8. 单选框、复选框、下拉列表

    单选框  radio (只能一个被选中) <span>性别</span> 男<input name="gender" type="radio ...

  9. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  10. html 复选框 mysql_Html:实现带复选框的下拉框(一)

    概述 项目中要用到可多选的下拉框(select),发现HTML中无此控件,故手动模拟实现一下. 模拟所用元素:input,ul,li 代码 模拟实现带复选框的下拉列表 body{ margin: 20 ...

最新文章

  1. 'AvgPool2d' object has no attribute 'divisor_override'
  2. 计算机二级python用什么书-计算机二级python考什么?
  3. Netty详解(四):Netty 整体架构
  4. tomcat服务组件详解(二)
  5. 定位的坐标原点HTML,html 定位
  6. 还有另一个报告生成器?
  7. python butter带通滤波器滤波出来的信号有NAN值或者分类效果极差
  8. Java技术依然备受追捧,主要学习内容有哪些?
  9. git push 使用总结
  10. [转载] 中华典故故事(孙刚)——31 千里送鹅毛_礼轻情义重
  11. matlab2014调用vs2015进行混合编译生成mex文件
  12. android 2048 游戏 源码
  13. Django搭建个人博客之制作app并配置相关环境
  14. 在QT界面中使用ico/png等图片文件,生成exe后不依赖外部文件
  15. java毕业设计老师评语_java毕业设计_springboot框架的教师评价评教系统
  16. php 保留小数0补位,PHP自带函数给数字前补0或补位
  17. C++:map.insert插入重复键(已存在键)将忽略,而非值覆盖
  18. linux 下打开png文件,png文件扩展名,png文件怎么打开?
  19. 基于FPGA的自动小车控制设计Verilog开发
  20. 美食家(2)- 家常红烧肉制作方法

热门文章

  1. wxWindows的事件表机制
  2. JavaScript自调用匿名函数
  3. UOJ269 清华集训2016 如何优雅地求和 下降幂多项式、NTT
  4. English trip V1 - 20.Look at me 看着我 Teacher:Solo Key: 声调(英语默认就声调[rising]和降调[falling]两种)...
  5. ReocketMq常用命令
  6. Django model 反向引用中的related_name
  7. 安装java项目开发环境
  8. Activity生命周期的回调,你应该知道得很多其它!--Android源代码剖析(下)
  9. 【OOM】GC overhead limit exceeded
  10. Oracle Enterprise Manager Cloud Control 12c 概述