select2多选框无法手动排序问题[转载]
原文链接: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多选框无法手动排序问题[转载]相关推荐
- TreeView的复选框隐藏 重新整理
CheckBoxes 为真 代码如下 using System.Runtime.InteropServices; #region 树的复选框隐藏private const int TVIF_STATE ...
- 多选框向后台传值,多选框的回显,对多选框的各种操作
1.多选框的回显: js:$( function(){ var checkBoxAll =$("input[name^='checkbox_']");//获取前缀为 ...
- DEV控件中GridView中的复选框与CheckBox实现联动的全选功能
最初的界面图如图1-1(全选框ID: cb_checkall DEV控件名称:gcCon ): 要实现的功能如下图(1-2 1-3 1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...
- Element表格嵌入复选框以及单选框
1,element 表格嵌入CheckBox 效果图如下: 2,element结合checkBox实现单选效果如下: html代码: <template><div><p ...
- GridControl 选择列、复选框全选(上)
说明: GirdControl 中加入一列,这一列不是写在数据库中的,而是代码中加入的. 图示: 底层类代码: #region GridControl 全选/// <summary>/// ...
- 个人永久性免费-Excel催化剂功能第58波-批量生成单选复选框
插件的最大威力莫过于可以把简单重复的事情批量完全,对日常数据采集或打印报表排版过程中,弄个单选.复选框和用户交互,美观的同时,也能保证到数据采集的准确性,一般来说用原生的方式插入单选.复选框,操作繁琐 ...
- iOS复选框——高雅的BEMCheckBox
GitHub地址:BEMCheckBox star:1800+ BEMCheckBox 是一个开源库,可以轻松地为iOS创建漂亮,高度可定制的,有动画效果的复选框. 要求 需要 iOS 7或更高版本, ...
- 单选框、复选框、下拉列表
单选框 radio (只能一个被选中) <span>性别</span> 男<input name="gender" type="radio ...
- MFC控件编程之复选框单选框分组框
MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...
- html 复选框 mysql_Html:实现带复选框的下拉框(一)
概述 项目中要用到可多选的下拉框(select),发现HTML中无此控件,故手动模拟实现一下. 模拟所用元素:input,ul,li 代码 模拟实现带复选框的下拉列表 body{ margin: 20 ...
最新文章
- 'AvgPool2d' object has no attribute 'divisor_override'
- 计算机二级python用什么书-计算机二级python考什么?
- Netty详解(四):Netty 整体架构
- tomcat服务组件详解(二)
- 定位的坐标原点HTML,html 定位
- 还有另一个报告生成器?
- python butter带通滤波器滤波出来的信号有NAN值或者分类效果极差
- Java技术依然备受追捧,主要学习内容有哪些?
- git push 使用总结
- [转载] 中华典故故事(孙刚)——31 千里送鹅毛_礼轻情义重
- matlab2014调用vs2015进行混合编译生成mex文件
- android 2048 游戏 源码
- Django搭建个人博客之制作app并配置相关环境
- 在QT界面中使用ico/png等图片文件,生成exe后不依赖外部文件
- java毕业设计老师评语_java毕业设计_springboot框架的教师评价评教系统
- php 保留小数0补位,PHP自带函数给数字前补0或补位
- C++:map.insert插入重复键(已存在键)将忽略,而非值覆盖
- linux 下打开png文件,png文件扩展名,png文件怎么打开?
- 基于FPGA的自动小车控制设计Verilog开发
- 美食家(2)- 家常红烧肉制作方法
热门文章
- wxWindows的事件表机制
- JavaScript自调用匿名函数
- UOJ269 清华集训2016 如何优雅地求和 下降幂多项式、NTT
- English trip V1 - 20.Look at me 看着我 Teacher:Solo Key: 声调(英语默认就声调[rising]和降调[falling]两种)...
- ReocketMq常用命令
- Django model 反向引用中的related_name
- 安装java项目开发环境
- Activity生命周期的回调,你应该知道得很多其它!--Android源代码剖析(下)
- 【OOM】GC overhead limit exceeded
- Oracle Enterprise Manager Cloud Control 12c 概述