Jquery multiselect 多选下拉框与ajax配合使用,动态拼接option。初始化默认选中多个,增加搜索框
来源:互联网 发布:怎么修改淘宝会员名字 编辑:程序博客网 时间:2024/06/06 01:04
近期公司业务需求,需要使用到多选下拉框。因为项目使用的是jQuery框架,所以在multiselect插件上也就用了jQuery multiselect。
一、需要引用的文件
在开始的时候是需要引入一些插件相关的文件的,这些外部js文件在官网中有,自行下载即可
<!-- Start add by wgs 下拉多选框 样式 --> <link rel="stylesheet" type="text/css" href="css/jquery.multiselect.css" /> <link rel="stylesheet" type="text/css" href="css/jquery-ui.css" /><!-- End 下拉多选框 -->
<!-- Start-多选下拉框 js外部文件--><script type="text/javascript" src="js/jquery-ui.min.js"></script><script type="text/javascript" src="js/jquery.multiselect.js"></script><!-- End-多选下拉框 -->
二、HTML中的代码
这里需要注意的是select元素中最好的就指定一个id,然后后面通过id来获取select元素
<div class="row"> <div class="col-md-4 info-title">使用仓库:</div> <div class="col-md-8"> <p> <select class="info-input storage" id="Depot_name" name="Depot_name"></select> <input type="hidden" id="Warehouse" /> </p> </div></div>
三、下拉框的选项option是从后台抓取出来的,option是动态拼接出来的
动态的option的关键在于:
ajax的中拼接的option的方式 ,每次循环一次,做一次拼接,value代表的是即将拼接出来的<option value=' '></option>中的value
var opt = $('<option />', {
value: Pk,
value: Pk,
text: values
});
opt.appendTo($("#Depot_name"));
});
opt.appendTo($("#Depot_name"));
function StorageList(){$("#Depot_name").html("").append("<option value=''>"+'仓库列表'+"</option>").append("<option value='1'>"+'暂无绑定仓库'+"</option>"); $.ajax({ type: "POST", url: url, success: function(data){ var list = $(data).find("result").text(); var pk = $(data).find("pk").text(); var value =$(data).find("value").text; $(data).find("item").each(function(i,e){ var Pk = $(e).find("pk").text(); var values = $(e).find("value").text(); //可用option与opt做对比 var option = $('<option value="'+Pk+'">'+values+'</option>'); var opt = $('<option />', { value: Pk, text: values }); opt.appendTo($("#Depot_name"));//每次迭代出来一个option的数据就将其拼接到select中 }); storageList.multiselect('refresh');//多选下拉框刷新操作,拼接过后一定需要刷新操作 },})// Start 初始化多选下拉框$("#Depot_name").multiselect({isOpen:false,multiple : true,header : true,height : 310,minWidth : 200,selectedList : 10,// 预设值最多显示10被选中项hide : [ "explode", 500 ],noneSelectedText : ['仓库列表'],close : function() {var val = $("#Depot_name").val();$("#Warehouse").val(val);}});$('#Depot_name').multiselect('disable');//禁用多选下拉框// End 2016-12-23 20:25:59}
这样子初始化过后,就能实现简单的多选下拉了。
四、多选取值:
注:取值处引用博主 翩翩 博文中的方法,详细的请猛戳:点击打开链接
如果想要获取到多选之后的值则需修改:jQuery.multiselect.js中的update方法
// updates the button text. call refresh() to rebuild update: function() { var o = this.options; var $inputs = this.inputs; var $checked = $inputs.filter(':checked'); var numChecked = $checked.length; var value; if(numChecked === 0) { value = o.noneSelectedText; } else { if($.isFunction(o.selectedText)) { value = o.selectedText.call(this, numChecked, $inputs.length, $checked.get()); } else if(/\d/.test(o.selectedList) && o.selectedList > 0 && numChecked <= o.selectedList) { value = $checked.map(function() { return $(this).next().html(); }).get().join(', '); } else { value = o.selectedText.replace('#', numChecked).replace('#', $inputs.length); } multiValues = $checked.map(function () { return $(this).val(); }).get().join(',');//加上这句 } this._setButtonValue(value); return value; },
添加下面这个函数:
MyValues:function(){ return multiValues; },
五、扩展搜索功能:
这个插件貌似没有搜索功能的,如果想要添加搜索功能的话,需要扩展:<script type="text/javascript" src="js/jquery.multiselect.filter.js"></script><link rel="stylesheet" type="text/css" href="css/jquery.multiselect.filter.css" />需要下载扩展功能外部js的请猛戳:点击打开链接$("#Depot_name").multiselect().multiselectfilter(); //为多选下拉框添加搜索功能
在添加搜索功能的时候,如果头部的不过位置的话,那么就会将“全选”、“全不选”两个按钮给挤下去。所以在初始化的时候可以去掉全选与全不选
$("#Depot_name").multiselect({isOpen:false,multiple : true,header : true,//去掉这个参数就能去掉全选与全部选height : 310,minWidth : 200,selectedList : 10,// 预设值最多显示10被选中项hide : [ "explode", 500 ],noneSelectedText : ['仓库列表'],close : function() {var val = $("#Depot_name").val();$("#Warehouse").val(val);}});如果上面操作后还不行的话,就可以直接修改jQuery.multiselect.js的代码,下面的这段代码是在叫前面的
$.widget("ech.multiselect", { // default options options: {// header: true, height: 175, minWidth: 225, classes: '', checkAllText: 'Check all', uncheckAllText: 'Uncheck all', noneSelectedText: 'Select options', selectedText: '# selected', selectedList: 0, show: null, hide: null, autoOpen: false, multiple: true, position: {}, appendTo: "body" },
这样子搜索框就出来了
0 0
- Jquery multiselect 多选下拉框与ajax配合使用,动态拼接option。初始化默认选中多个,增加搜索框
- bootstrap-multiselect.js多选下拉框初始化时默认选中初始值
- jQuery设置下拉框select 默认选中第一个option
- jQuery设置下拉框select 默认选中第一个option
- jquery multiSelect 多选下拉框
- jquery multiSelect 多选下拉框代码
- Jquery-multiselect 多选下拉框
- jquery multiselect, 多选下拉框的使用
- jQuery多选下拉框 multiselect 的使用
- jQuery设置下拉框select 默认选中option
- jquery multiselect 下拉多选
- 下拉框默认选中select的第一个option
- query多选下拉框插件 jquery-multiselect
- query多选下拉框插件 jquery-multiselect
- query多选下拉框插件 jquery-multiselect
- js:jquery multiSelect 多选下拉框实例
- query多选下拉框插件 jquery-multiselect(修改)
- HTML下拉框<select>默认选中<option>
- 工厂模式
- Process.nextTick 和 setImmediate
- 小米2016/9/23部分笔试题目
- java.lang.NoClassDefFoundError的解决方法
- 【Java并发编程】实现多线程的两种方法
- Jquery multiselect 多选下拉框与ajax配合使用,动态拼接option。初始化默认选中多个,增加搜索框
- ON DUPLICATE KEY UPDATE批量插入记录,遇到重复记录则为自动更新
- codeforces 748D Santa Claus and a Palindrome (构造+贪心+数据结构)
- 《JAVA与模式》之原型模式
- 单例模式
- Android Studio 发布APK时报错:input jar file is specified twice
- Java中获取当前系统年份
- C#如何统计代码行数
- MVC封装(六)视图层