【澳门葡京】依照jquery的Infiniti级联下拉框js插件,Select2下拉框总计

Select2.js下拉框使用小结,select2.js下拉框

用了这么久的Select2插件,也该写篇小说计测度算。当初感到Select2不是相当好用,但又找不到比它越来越好的下拉框插件。

在自家的回忆里Select2有2个本子,最新版本有一对新的特色,而且更新了刹那间措施参数,比最先版本要美观一些,本文针对新本子。

官网:

演示:

澳门葡京 1

鉴于博客系统的缘故,所以不得不演示轻松的法力。

一.文件供给引进select2.full.js、select2.min.css(4.0.1本子)和jquery.1.8.3及以上

新型版本的select2万一援引的jquery版本十分的低的话,某个职能不可能平常使用。譬喻:清除效用allowClear:
true

最新版本请使用<select></select>标签(对于当地化的数码你能够行使input,但ajax远程数据必得使用select)

二.placeholder

placeholder占位提醒文字,假若须求知道作用,则必需设置placeholder。

三.加载本地数据

select2私下认可的数据属性是id、text,新本子能够自定义,但如故用私下认可的可比好。所以提供的json中最佳转变为id、text情势,当然可以增进别的属性。

var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
$("#c01-select").select2({
 data: data,
 placeholder:'请选择',
 allowClear:true
})

四.加载远程数据

$("#c01-select").select2({
 ajax: {
 url: "data.json",
 dataType: 'json',
 delay: 250,
 data: function (params) {
  return {
  q: params.term,
  };
 },
 processResults: function (data) {
  return {
  results: data
  };
 },
 cache: true
 },
 escapeMarkup: function (markup) { return markup; }, 
 minimumInputLength: 1,
 templateResult: formatRepo, 
 templateSelection: formatRepoSelection 
});

说明:

     1.q: params.term
查询参数(params.term表示输入框中内容,q产生到服务器的参数名;所以那边你可以增多自定义参数,如:stype:’person’)

     2.processResults中results:
data重临数据(重临最终数额给results,即使笔者的数码在data.res下,则赶回data.res。那么些与服务器重返json有关)

     3.minimumInputLength
细微须求输入多少个字符才实行询问,与之有关的maximumSelectionLength表示最大输入限制。

     4.escapeMarkup字符转义管理

     5.templateResult回去结果回调function formatRepo(repo){return
repo.text},那样就能够将重返结果的的text突显到下拉框里,当然你能够return
repo.text+”1″;等

     6.templateSelection选中项回调function
formatRepoSelection(repo){return repo.text}

     7.有关再次回到的
json的格式:select2暗中认可json格式为[{id:1,text:’text’},{id:2,text:’text’}],新版严谨供给那样的格式,当然你能够增多列,如:[{id:1,text:’text’,name:’liu’}]

五.获取选中项

var res=$("#c01-select").select2("data")[0] ; //单选
var reslist=$("#c01-select").select2("data"); //多选
if(res==undefined)
{
  alert("你没有选中任何项");
}
if(reslist.length)
{
  alert("你选中任何项");
}

六.清空选用项和设置不可用

//清空选择
$("#c01-select").val(null).trigger("change");
$("#c01-select").val("你的placeholder").trigger("change");//或者
//如果你使用的是input标签(默认就是本地数据),你可以用$("#c01-select").val('');来清空选项
//disabled
$("#c01-select").prop("disabled", false);//可用
$("#c01-select").prop("disabled", true);//不可用

七.启用多选

$("#c01-select").select2({
 data:data,
 multiple: true
});

多选演示:

澳门葡京 2

八.下边轻易表明新版与老版相比

1.结实回调剂当选回调名称:formatResult、formatSelection(老版);templateResult、templateSelection(新版)

2.初始化:

//老版,注意如果初始化时文本框中本身没有值(为空),则不会触发该方法
initSelection: function (element, callback) {
 var id = $(element).val();
 var data = { id: id, text: id};//这里是初始化的数据,你可以通过id来从服务器上获取(ajax),再装载进去
 callback(data);
}

//新版,直接给select添加option
$("#id").append(new Option("Jquery", 10001, false, true));
//或者
$("#id").append("<option value='10001'>Jquery</option>");

3.拿走或设置值:select2(“val”)(老版);$(“select”).val()(新版)

推荐应用

var res = $("#id").select2("data");
//返回数组,单选就取res[0];好处是不进可以获取id、text还可以获取其他属性,如res[0].names

4.停用或启用:$(“select”).enable(false);(老版);$(“select”).prop(“disabled”,
true);(新版)

5.主题样式:新版的体制已经更新,但假使想使用老版样式则能够安装 theme:
“classic”

以上就是本文的全体内容,希望对大家的就学抱有帮忙,也期望大家多多帮忙帮客之家。

用了这么久的Select2插件,也该写篇文章计算总结。当初倍感Select2不是专程好用,但又找不到比它…

用了这么久的Select2插件,也该写篇文章总括计算。当初倍感Select2不是专程好用,但又找不到比它更加好的下拉框插件。

用了这么久的Select2插件,也该写篇文章总计总括。当初以为Select2不是刻意好用,但又找不到比它越来越好的下拉框插件。

世故方面思念了比较多的地点,提供了多少个首要的布署方便在每一项情况下利用,接待各位童鞋使用,源码完全开放。开垦这几个插件的来源于这两日维护三个4级级联下拉框被内部200行代码及复杂的结交涉bug所郁闷(之所以那样多代码是因为该级联下拉框有时只现出2个或3个),想到这类的供给实际上平常都能遇到,jquery里未有那样相比较好的插件,索性本身支付个。源代码并不复杂,稍微复杂的地点在其次个插件使用了缓存,造成掌握起来拾贰分困难,前边会做些解释。
插件一:适合在不与服务器进行AJAX交互情况使用,需预先将全数下拉框数据总体读出
插件二:适用于每一个子级下拉框都post到服务器中取数据绑定。特出之处在于会将已选用过的数据缓存达到高效用的目标,注意:缓存的键值不仅是父下拉框的值,而是从拔尖下拉框到当下父下拉框的值组合,那是为着对付出现同样父下拉框对应的子级并差异样的情事。同样的原委,postback中回发给服务器的form表单中也是包涵富有的父下拉框的值。

在自家的影像里Select2有2个版本,最新版本有一部分新的风味,况且更新了眨眼之间间艺术参数,比最早版本要赏心悦目一些,本文针对新本子。

在自己的纪念里Select2有2个版本,最新版本有点新的风味,并且更新了瞬间模式参数,比最先版本要美观一些,本文针对新本子。

复制代码 代码如下:

官网:

官网: 

/*
* 级联下拉框Jqueyr插件,V1.2
* Copyright 2011, Leo.Liu
* 本插件包括2个无刷新级联下拉框插件:
*
插件一:cascadeDropDownData是在不与服务器进行AJAX交互情况采用,需预先将兼具下拉框数据总体读出。demo:
*【澳门葡京】依照jquery的Infiniti级联下拉框js插件,Select2下拉框总计。 方法一:var dataItem = [[‘全部’, ‘-1’, ‘0’], [‘a001’, ‘a001’,
‘0’], [‘a002’, ‘a002’, ‘0’], [‘a003’, ‘a003’, ‘0’]
, [‘b001’, ‘b001’, ‘a001’], [‘b002’, ‘b002’, ‘a001’], [‘b003’,
‘b003’, ‘a002’], [‘b004’, ‘b004’, ‘a003’]
, [‘c001’, ‘001’, ‘b001’], [‘c002’, ‘002’, ‘b001’], [‘c003’, ‘003’,
‘b002’], [‘c004’, ‘004’, ‘b003’]];
$.cascadeDropDownBind.bind(dataItem, { sourceID: ‘Select1’, selectValue:
‘a001’, parentValue : ‘0’,
child: { sourceID: ‘Select2’, selectValue: ‘b002’,
child: { sourceID: ‘Select3’, selectValue: ‘c002’}
}
});
* 此方法有难题:a)要求下拉框的值与老爹和儿子对应中的父值不能够一直以来b)无法设置全选准则
*
* 方法二:var data = [[‘全部’, ‘0’], [‘a001’, ‘a001’], [‘a002’,
‘a002’], [‘a003’, ‘a003’]];
var data2 = [[‘全部’, ‘0’, ‘0’], [‘b001’, ‘b001’, ‘a001’],
[‘b002’, ‘b002’, ‘a001’], [‘b003’, ‘b003’, ‘a002’], [‘b004’,
‘b004’, ‘a003’]];
var data3 = [[‘全部’, ‘0’, ‘0’], [‘c001’, ‘001’, ‘b001’], [‘c002’,
‘002’, ‘b001’], [‘c003’, ‘003’, ‘b002’], [‘c004’, ‘004’,
‘b003’]];
$.cascadeDropDownBind.bind(data, { sourceID: ‘Select1’, selectValue:
‘a001’ });
$.cascadeDropDownBind.bind(data2, { sourceID: ‘Select2’, selectValue:
‘b002’, parentID: ‘Select1’ });
$.cascadeDropDownBind.bind(data3, { sourceID: ‘Select3’, selectValue:
‘c002’, parentID: ‘Select2’ });
* 方法三参见cascadeDropDownBind.bind内容
*/
jQuery.extend({
//下拉框的数量对象
cascadeDropDownData: function () {
//******布署属性*******
this.removeFirst = true; //是还是不是移除第四个项
this.appentAllValue = ”; //要是父项目标值等于此值则显得全体项
this.sourceID = ”; //此下拉框ID
this.parentID = ”; //父下拉框ID
this.items = []; //项的多寡,二维数组,形式:[[‘文本’, ‘值’,
‘父ID’],……]; 值和父ID可省略
this.selectValue = ”; //初阶化选中的项
this.parentValue = null;
//用于从一群数据中筛选出该组所需的项,一般用来绑定第多少个下拉框
//******布局属性*******
//以下是全局变量,没有要求在外表设置
this.child = null;
var currentDrop = null;
this.bind = function () {
currentDrop = $(‘#’ + this.sourceID);
this.clear();
//填充数据项目
this.fillItem();
//设置选中项
if (this.selectValue) {
currentDrop.val(this.selectValue);
}
//设置父下拉框的change事件
this.setChange();
};
//清理填充项目
this.clear = function () {
if (this.removeFirst) {
currentDrop.empty();
} else {
for (var i = currentDrop[0].options.length – 1; i > 0; i–) {
currentDrop[0].options[i] = null;
}
}
};
//填充数据项目
this.fillItem = function () {
var _parentValue = this.parentValue;
if (this.parentID)
_parentValue = $(‘#’ + this.parentID).val();
var all = false;
if (this.appentAllValue && _parentValue == this.appentAllValue)
all = true;
$.each(this.items, function (index, item) {
var val = item.length > 1 ? item[1] : item[0];
//若无一些名value则用text代替
if (all || item.length <= 2 || item[2] == _parentValue) {
//假若长度小于3,以为尚未父下拉框则填充全体项
currentDrop.append(‘<option value=”‘ + val + ‘”>’ + item[0] +
‘</option>’);
}
});
};
//设置父下拉框的change事件
this.setChange = function () {
if (this.parentID) {
$(‘#’ + this.parentID).bind(‘change’, this.change);
}
};
//父下拉框事件回调函数
var _this = this;
this.change = function () {
_this.clear();
_this.fillItem();
currentDrop.change();
};
},
cascadeDropDownBind: {
bind: function (data, setting) {
var obj = new $.cascadeDropDownData();
$.extend(obj, setting);
obj.items = data;
obj.bind();
if (setting.child) {
setting.child.parentID = setting.sourceID
this.bind(data, setting.child);
}
}
}
});
/*
*
插件二:ajaxDropDownData适用于种种子级下拉框都post到服务器中取数据绑定。
* 该插件优异之处在于会将已运用过的数目缓存达到高效能的目标。
*
注意:缓存的键值不唯有是父下拉框的值,而是从顶尖下拉框到近日父下拉框的值组合,那是为着应付出现同样父下拉框对应的子级并分歧的情状
*
同样的原由,postback中回发给服务器的form表单中也是归纳富有的父下拉框的值
* 使用格局:
var firstItems = null;
//也足以将第叁个下拉框的多少数组放到这举办绑定,恐怕安装为空,不改变下拉框。
$.ajaxDropDownBind.bindTopDrop(‘Select1’, firstItems, null, false,
‘Select2’);
$.ajaxDropDownBind.bindCallback(‘Select2’, null, false, ‘Select3’,
”);
$.ajaxDropDownBind.bindCallback(‘Select3’, null, false, null,
”);
$(‘#Select1’).change();
*
最重要的是级联的ID设置不可能相当不够。高档用法参见$.ajaxDropDownBind.bindCallback方法的原委。
*/
jQuery.extend({
//此目标是个链表结构
ajaxDropDownData: function () {
//******配置属性*******
this.sourceID = ”; //此下拉框ID
this.items = []; //此项的多少,二维数组,方式:[[‘文本’, ‘值’,
‘父ID’],……]; 值和父ID可省略
this.callback = null;
//回调函数,用于获取下一流的章程,此函数接收2个参数:value,
dropdownlist分别表示父级下拉框选中的值及自身的实例
this.childID = ”; //关联的子控件ID
this.removeFirst = true; //是否移除该项第二个挑选
this.selectValue = ”; //此项伊始化选中的值
//******配备属性*******
//********************上边是系统变量及办法****************************************************
this.childItem = []; //子对象列表,用于缓存
this.parentObj = null; //父对象
this.canChange = true;
this.clearItem = true;
this.bind = function () {
$.ajaxDropDownBind.bindData(this);
};
this.bindData = function (setting) {
$.extend(this, setting);
$.ajaxDropDownBind.bindData(this);
};
/*回溯到根节点,从根节点初阶安分守纪级联取当前科学的下拉框的对象
是因为下拉框的事件唯有二个,而相应的指标有多个,所以这里须要先回溯到根,在从根起先找起
*/
this.getRightOnChangeObj = function () {
if (this.parentObj)
return this.parentObj.getRightOnChangeObj().childItem[$(‘#’ +
this.parentObj.sourceID).val()]; //递归
else
return this;
}
},
ajaxDropDownBind: {
currentDrop: null,
_thisData: null,
callbackPool: [],
//清理填充项目
clear: function () {
if (_thisData.removeFirst) {
currentDrop.empty();
} else {
for (var i = currentDrop[0].options.length – 1; i > 0; i–) {
currentDrop[0].options[i] = null;
}
}
},
//填充数据项目
fillItem: function () {
for (var i = 0; i < _thisData.items.length; i++) {
var val = _thisData.items[i].length > 1 ?
_thisData.items[i][1] : _thisData.items[i][0];
//若无一些名value则用text代替
currentDrop.append(‘<option value=”‘ + val + ‘”>’ +
_thisData.items[i][0] + ‘</option>’);
}
//设置选中项
if (_thisData.selectValue) {
currentDrop.val(_thisData.selectValue);
_thisData.selectValue = ”;
}
},
//参数data是指当前变化的下拉框所在的目的
bindData: function (data) {
_thisData = data;
currentDrop = $(‘#’ + _thisData.sourceID); //本人的节点并非子级
if (_thisData.clearItem)
this.clear();
if (_thisData.items)
this.fillItem();
if (_thisData.childID) {
if (!currentDrop.data(‘binded’)) {
//决断是或不是绑定过事件,绑定过的不在绑定
currentDrop.data(‘binded’, true);
var _firstChangeObj = _thisData;
//由于下拉框的风云唯有叁个,而相应的靶子有多个,所以那边的对象是绑按时的对象,而非准确的指标
currentDrop.bind(‘change’, function () {
var rightChildItem = _firstChangeObj.getRightOnChangeObj().childItem;
var thisValue = $(‘#’ + _firstChangeObj.sourceID).val();
//获取当前变化的下拉框的值,注意无法用currentDrop代替,因为currentDrop也是旧的值
if (rightChildItem[thisValue]) {
console.log(‘cache’);
rightChildItem[thisValue].bind(); //使用缓存的数量来绑定
}
else {
console.log(‘getdata’);
//三个新的实例,并树立链表关系
var dropData = new $.ajaxDropDownData();
dropData.sourceID = _firstChangeObj.childID;
dropData.parentObj = _firstChangeObj;
rightChildItem[thisValue] = dropData; //设置缓存
if (_firstChangeObj.callback)
//如若有回调函数则一贯调用,不然调用系统自动生成的函数
_firstChangeObj.callback(thisValue, dropData); //回调函数
else {
var callback = $.ajaxDropDownBind.callbackPool[dropData.sourceID];
if (callback)
callback(thisValue, dropData);
}
}
});
}
if (_thisData.canChange)
currentDrop.change();
}
},
//绑定第一流下拉框
bindTopDrop: function (sourceID, items, selectValue, removeFirst,
childID) {
var mydrop = new $.ajaxDropDownData();
mydrop.sourceID = sourceID;
mydrop.items = items;
if (!items || items.length == 0)
mydrop.clearItem = false;
mydrop.removeFirst = removeFirst;
mydrop.selectValue = selectValue;
mydrop.childID = childID;
mydrop.canChange = false;
mydrop.bind();
},
//绑定子级下拉框
bindCallback: function (sourceID, selectValue, removeFirst, childID,
parentPostUrl) {
var callback = function (value, dropdownlist) {
var postData = {};
var parentObj = dropdownlist.parentObj;
while (parentObj) {
postData[parentObj.sourceID] = $(‘#澳门葡京,’ + parentObj.sourceID).val();
parentObj = parentObj.parentObj;
}
$.getJSON(parentPostUrl + ‘&jsoncallback=?’, postData, function (data)
{
dropdownlist.items = data;
dropdownlist.removeFirst = removeFirst;
dropdownlist.selectValue = selectValue;
dropdownlist.childID = childID;
dropdownlist.bind();
});
};
this.callbackPool[sourceID] = callback;
}
}
});

演示:

演示:

运用办法代码里有注释,不赘述,接待拍砖。
不精通怎么增添附属类小部件,把测量检验代码也一并贴上来,因为插件二急需劳务器端的相称这里就不贴插件二的测量试验代码。
插件一测量检验代码

澳门葡京 3

出于博客系统的原因,所以只可以演示简单的功力。

复制代码 代码如下:

是因为博客系统的缘由,所以不得不演示轻巧的效果与利益。

一.文件供给引进select2.full.js、select2.min.css(4.0.1本子)和jquery.1.8.3及以上

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“;
<html xmlns=”;
<head runat=”server”>
<title>Infiniti极级联下拉框的封装</title>
<script type=”text/javascript”
src=”;
<style>
select
{
margin-left: 10px;
}
body
{
font-size: 14px;
background-color: #CCCCCC;
}
td
{
border: 1px solid #FF6600;
padding: 5px;
text-align: left;
}
input
{
width: 80px;
}
input[type=checkbox]
{
width: 20px;
}
</style>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>
<h1>
极致极级联下拉框的封装</h1>
<div style=”margin: 50px 0 50px 10px;”>
绑定方法:<select id=”selCase”><option
value=”1″>第一种艺术</option>
<option value=”2″>第三种办法</option>
</select>
<input type=”button” onclick=”test()” value=”绑定” />
<div style=”margin: 10px;”>
<table cellpadding=”0″ cellspacing=”0″>
<tr>
<td>
先是个下拉框:
</td>
<td>
<input type=”text” id=”tb1sel” value=”a002″ />设置当前项的选中值
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
第三个下拉框:
</td>
<td>
<input type=”text” id=”tb2sel” value=”” />设置当前项的选中值
</td>
<td>
<input type=”checkbox” id=”cb2Remove” value=”” />是不是移除第一项
</td>
<td>
<input type=”text” id=”tb2AllValue” value=”0″
/>当前一项值万分此值时,该项全选
</td>
</tr>
<tr>
<td>
其多个下拉框:
</td>
<td>
<input type=”text” id=”tb3sel” value=”” />设置当前项的选中值
</td>
<td>
<input type=”checkbox” id=”cb3Remove” />是还是不是移除第一项
</td>
<td>
<input type=”text” id=”tb3AllValue” value=””
/>当前一项值相当此值时,该项全选
</td>
</tr>
</table>
</div>
</div>
<h4>
下拉框结果:</h4>
<div id=”selContainer” style=”margin: 0px 0 50px 100px;”>
</div>
<script type=”text/javascript”
src=”/Scripts/Jquery.cascadeDropDown-1.2.js”></script>
<script type=”text/javascript”>
$(function () {
toggleSetting();
$(‘#selCase’).bind(‘change’, toggleSetting);
});
function toggleSetting() {
if ($(‘#selCase’).val() == ‘1’)
$(‘table tr’).each(function (i, item) {
$($(item).find(‘td’)[3]).hide();
});
else
$(‘table tr’).each(function (i, item) {
$($(item).find(‘td’)[3]).show();
});
}
function test() {
if ($(‘#selCase’).val() == ‘1’)
testcase1();
else
testcase2();
}
function testcase1() {
$(‘#Select1’).remove();
$(‘#Select2’).remove();
$(‘#Select3’).remove();
$(‘#selContainer’).html(‘<select id=”Select1″><option
value=”-1″>全部</option></select><select
id=”Select2″><option
value=”-1″>全部</option></select><select
id=”Select3″><option
value=”-1″>全部</option></select>’);
var dataItem = [[‘a001’, ‘a001’, ‘0’], [‘a002’, ‘a002’, ‘0’],
[‘a003’, ‘a003’, ‘0’]
, [‘b001’, ‘b001’, ‘a001’], [‘b002’, ‘b002’, ‘a001’], [‘b003’,
‘b003’, ‘a002’], [‘b004’, ‘b004’, ‘a002’], [‘b005’, ‘b005’,
‘a003’]
, [‘c001’, ‘001’, ‘b001’], [‘c002’, ‘002’, ‘b001’], [‘c003’, ‘003’,
‘b002’], [‘c004’, ‘004’, ‘b002’], [‘c005’, ‘005’, ‘b003’],
[‘c006’, ‘006’, ‘b004’], [‘c007’, ‘007’, ‘b004’], [‘c008’, ‘008’,
‘b005’]
];
$.cascadeDropDownBind.bind(dataItem,
{ sourceID: ‘Select1’, selectValue: $(‘#tb1sel’).val(), parentValue:
‘0’, removeFirst: false,
child: { sourceID: ‘Select2’, selectValue: $(‘#tb2sel’).val(),
removeFirst: $(‘#cb2Remove’).attr(‘checked’),
child: { sourceID: ‘Select3’, selectValue: $(‘#tb3sel’).val(),
removeFirst: $(‘#cb3Remove’).attr(‘checked’) }
}
}
);
}
function testcase2() {
$(‘#Select1’).remove();
$(‘#Select2’).remove();
$(‘#Select3’).remove();
//$(‘#selContainer’).html(‘<select
id=”Select1″></select><select
id=”Select2″></select><select
id=”Select3″></select>’);
$(‘#selContainer’).html(‘<select id=”Select1″><option
value=”0″>全部</option></select><select
id=”Select2″><option
value=”0″>全部</option></select><select
id=”Select3″><option
value=”0″>全部</option></select>’);
var data = [[‘a001’, ‘a001’], [‘a002’, ‘a002’], [‘a003’,
‘a003’]];
var data2 = [[‘b001’, ‘b001’, ‘a001’], [‘b002’, ‘b002’, ‘a001’],
[‘b003’, ‘b003’, ‘a002’], [‘b004’, ‘b004’, ‘a002’], [‘b005’,
‘b005’, ‘a003’]];
var data3 = [[‘c001’, ‘001’, ‘b001’], [‘c002’, ‘002’, ‘b001’],
[‘c003’, ‘003’, ‘b002’], [‘c004’, ‘004’, ‘b002’], [‘c005’, ‘005’,
‘b003’], [‘c006’, ‘006’, ‘b004’], [‘c007’, ‘007’, ‘b004’],
[‘c008’, ‘008’, ‘b005’]];
$.cascadeDropDownBind.bind(data, { sourceID: ‘Select1’, selectValue:
$(‘#tb1sel’).val(), removeFirst: false });
$.cascadeDropDownBind.bind(data2, { sourceID: ‘Select2’, selectValue:
$(‘#tb2sel’).val(), parentID: ‘Select1’, removeFirst:
$(‘#cb2Remove’).attr(‘checked’), appentAllValue:
$(‘#tb2AllValue’).val() });
$.cascadeDropDownBind.bind(data3, { sourceID: ‘Select3’, selectValue:
$(‘#tb2sel’).val(), parentID: ‘Select2’, removeFirst:
$(‘#cb3Remove’).attr(‘checked’), appentAllValue:
$(‘#tb3AllValue’).val() });
}
</script>
</div>
</form>
</body>
</html>

一.文件需求引进select2.full.js、select2.min.css(4.0.1版本)和jquery.1.8.3及以上

风行版本的select2一旦引用的jquery版本比较低的话,有些职能不或者寻常使用。举例:清除作用allowClear: true

你恐怕感兴趣的稿子:

  • js完结的举国省市二级联合浮动下拉挑选菜单完整实例
  • PHP+Mysql+Ajax+JS达成省市区三级联合浮动
  • JS制作轻易的三级联合浮动
  • JS实多级联合浮动下拉菜单类,简单达成省市区联合浮动菜单!
  • 最棒用的省市二级联动原生js完成您值得拥有
  • jquery+json
    通用三级联合浮动下拉列表
  • javascript实现省市区三级联合浮动下拉框菜单
  • js操作二级联合浮动完结代码
  • 省市区三级联合浮动下拉框菜单javascript版
  • JavaScript兑现三级级联特效

最新版本的select2即使援引的jquery版本异常的低的话,有个别意义不可能符合规律使用。举个例子:清除效能allowClear:
true

新型版本请使用<select></select>标签(对于本地化的多寡你能够选择input,但ajax远程数据必需运用select)

摩登版本请使用<select></select>标签(对于本地化的数目你可以应用input,但ajax远程数据必需运用select)

二.placeholder

二.placeholder

placeholder占位提醒文字,借使要求排除作用,则必需设置placeholder。

placeholder占位提醒文字,倘使必要通晓效率,则必得设置placeholder。

三.加载本地数据

三.加载本地数据

select2暗许的多寡属性是id、text,新本子能够自定义,但要么用私下认可的可比好。所以提供的json中最棒转变为id、text方式,当然能够加上另外属性。

select2暗许的数额属性是id、text,新本子能够自定义,但要么用暗中同意的可比好。所以提供的json中最棒调换为id、text方式,当然能够加上另外属性。

var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
$("#c01-select").select2({
  data: data,
  placeholder:'请选择',
  allowClear:true
})
var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
$("#c01-select").select2({
 data: data,
 placeholder:'请选择',
 allowClear:true
})

四.加载远程数据

四.加载远程数据

$("#c01-select").select2({
  ajax: {
    url: "data.json",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
        q: params.term,
      };
    },
    processResults: function (data) {
      return {
        results: data
      };
    },
    cache: true
  },
  escapeMarkup: function (markup) { return markup; }, 
  minimumInputLength: 1,
  templateResult: formatRepo, 
  templateSelection: formatRepoSelection 
});
$("#c01-select").select2({
 ajax: {
 url: "data.json",
 dataType: 'json',
 delay: 250,
 data: function (params) {
 return {
 q: params.term,
 };
 },
 processResults: function (data) {
 return {
 results: data
 };
 },
 cache: true
 },
 escapeMarkup: function (markup) { return markup; }, 
 minimumInputLength: 1,
 templateResult: formatRepo, 
 templateSelection: formatRepoSelection 
});

说明:

说明:

     1.q: params.term
查询参数(params.term表示输入框中内容,q产生到服务器的参数名;所以这里你能够增添自定义参数,如:stype:’person’)

     1.q: params.term
查询参数(params.term表示输入框中内容,q发生到服务器的参数名;所以这里你能够增多自定义参数,如:stype:’person’)

     2.processResults中results:
data重返数据(重回最后数额给results,假诺自个儿的数码在data.res下,则赶回data.res。那一个与服务器重临json有关)

     2.processResults中results:
data重返数据(重返最终数额给results,假设自己的数目在data.res下,则赶回data.res。那个与服务器再次来到json有关)

     3.minimumInputLength
微小须要输入多少个字符才举行询问,与之有关的maximumSelectionLength表示最大输入限制。

     3.minimumInputLength
比异常的小须要输入多少个字符才进行查询,与之相关的maximumSelectionLength表示最大输入限制。

     4.escapeMarkup字符转义管理

     4.escape马克up字符转义管理

     5.templateResult回到结果回调function formatRepo(repo){return
repo.text},那样就足以将回来结果的的text展现到下拉框里,当然你能够return repo.text+”1″;等

     5.templateResult回来结果回调function formatRepo(repo){return
repo.text},那样就足以将重回结果的的text彰显到下拉框里,当然你能够return
repo.text+”1″;等

   
 6.templateSelection选中项回调function formatRepoSelection(repo){return repo.text}

     6.templateSelection选中项回调function
formatRepoSelection(repo){return repo.text}

     7.有关再次回到的
json的格式:select2暗中认可json格式为[{id:1,text:’text’},{id:2,text:’text’}],新版严刻供给这样的格式,当然你能够增添列,如:[{id:1,text:’text’,name:’liu’}]

     7.关于再次回到的
json的格式:select2暗许json格式为[{id:1,text:’text’},{id:2,text:’text’}],新版严谨需要那样的格式,当然你能够加多列,如:[{id:1,text:’text’,name:’liu’}]

五.获取选中项

五.获取选中项

var res=$("#c01-select").select2("data")[0] ; //单选
var reslist=$("#c01-select").select2("data");    //多选
if(res==undefined)
{
     alert("你没有选中任何项");
}
if(reslist.length)
{
     alert("你选中任何项");
}
var res=$("#c01-select").select2("data")[0] ; //单选
var reslist=$("#c01-select").select2("data"); //多选
if(res==undefined)
{
 alert("你没有选中任何项");
}
if(reslist.length)
{
 alert("你选中任何项");
}

六.清空接纳项和设置不可用

六.清空选择项和装置不可用

//清空选择
$("#c01-select").val(null).trigger("change");
$("#c01-select").val("你的placeholder").trigger("change");//或者
//如果你使用的是input标签(默认就是本地数据),你可以用$("#c01-select").val('');来清空选项

//disabled
$("#c01-select").prop("disabled", false);//可用
$("#c01-select").prop("disabled", true);//不可用
//清空选择
$("#c01-select").val(null).trigger("change");
$("#c01-select").val("你的placeholder").trigger("change");//或者
//如果你使用的是input标签(默认就是本地数据),你可以用$("#c01-select").val('');来清空选项
//disabled
$("#c01-select").prop("disabled", false);//可用
$("#c01-select").prop("disabled", true);//不可用

七.启用多选

七.启用多选

$("#c01-select").select2({
  data:data,
  multiple: true
});
$("#c01-select").select2({
 data:data,
 multiple: true
});

多选演示:

多选演示:

是因为博客系统原因只可以演示选择

澳门葡京 4

八.下边轻易表明新版与老版相比

八.下边简单表明新版与老版相比

1.结出回疗养当选回调名称:formatResult、formatSelection(老版);templateResult、templateSelection(新版)

1.结果回调弄整理当选回调名称:formatResult、formatSelection(老版);templateResult、templateSelection(新版)

2.初始化:

2.初始化:

//老版,注意如果初始化时文本框中本身没有值(为空),则不会触发该方法
initSelection: function (element, callback) {
   var id = $(element).val();
   var data = { id: id, text: id};//这里是初始化的数据,你可以通过id来从服务器上获取(ajax),再装载进去
   callback(data);
}

//新版,直接给select添加option
$("#id").append(new Option("Jquery", 10001, false, true));
//或者
$("#id").append("<option value='10001'>Jquery</option>");
//老版,注意如果初始化时文本框中本身没有值(为空),则不会触发该方法
initSelection: function (element, callback) {
 var id = $(element).val();
 var data = { id: id, text: id};//这里是初始化的数据,你可以通过id来从服务器上获取(ajax),再装载进去
 callback(data);
}

//新版,直接给select添加option
$("#id").append(new Option("Jquery", 10001, false, true));
//或者
$("#id").append("<option value='10001'>Jquery</option>");

3.获取或设置值:select2(“val”)(老版);$(“select”).val()(新版)

3.获得或设置值:select2(“val”)(老版);$(“select”).val()(新版)

推荐应用

引入应用

var res = $("#id").select2("data");
//返回数组,单选就取res[0];好处是不进可以获取id、text还可以获取其他属性,如res[0].names
var res = $("#id").select2("data");
//返回数组,单选就取res[0];好处是不进可以获取id、text还可以获取其他属性,如res[0].names

4.停用或启用:$(“select”).enable(false);(老版);$(“select”).prop(“disabled”, true);(新版)

4.停用或启用:$(“select”).enable(false);(老版);$(“select”).prop(“disabled”,
true);(新版)

5.主旨样式:新版的体裁已经更新,但一旦想接纳老版样式则足以设置 theme:
“classic”

5.核心样式:新版的体制已经更新,但假使想使用老版样式则能够安装 theme:
“classic”

十、在绑定插件中选用select2(二零一七年二月五日翻新)

假使大家还想深入学习,能够点击jquery下拉框效果汇总、JavaScript下拉框效果汇总拓宽学习。

用得非常多绑定插件有avalon、Vue等

上述正是本文的全体内容,希望对大家的学习抱有协助,也期待我们多多接济脚本之家。

尽只怕不要平素绑定到select标签上,当然本地数据的input还能够的,在
change事件中手动赋值

你恐怕感兴趣的作品:

  • Angularjs完成带查找筛选效能的select下拉框示例代码
  • AngularJS使用ng-repeat指令完毕下拉框
  • JS仿百度机关下拉框模糊匹配提醒
  • js自定义select下拉框美化特效
  • js达成带找寻功效的下拉框实时追寻实时相称
  • jquery及原生js获取select下拉框选中的值示例
  • Extjs中ComboBoxTree达成的下拉框树效果(自写)
  • js 动态选中下拉框
  • 听别人说jquery的无限级联下拉框js插件
  • js完成下拉框效果(select)

 

正文出处: 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website