Selectize.js插件使用简介

本文介绍了Selectize.js插件的基本功能,如搜索、动态选择和多选,并详细讲解了其属性如`create`、`persist`等的用法,以及`onChange`、`onDropdownOpen`等事件。此外,还展示了如何使用API进行操作,如`clear()`、`addOption()`等,并给出了动态加载数据的示例。在实际应用中可能会遇到的CSS引用问题和样式调整也进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

Selectize.js是一款基于JQuery的操作<select><input>标签的优秀插件,实现搜索、动态选择、多选、动态数据加载等功能。

这儿简单介绍了插件的一些属性的含义,事件的定义。以及两个实际情况中selectize插件综合运用。

插件下载:https://github.com/brianreavis/selectize.js/archive/master.zip

使用示例

$('#select-beast').selectize({
    create: true,
    sortField: {
        field: 'text',
        direction: 'asc'
    },
    dropdownParent: 'body'
});

属性简介:

1、create: true下拉option中没有输入的内容会出现Add+输入的内容,false则只能在已有的option中选择,不允许添加。

2、persist: true对于使用create方式添加的option会添加到select标签下面,再次点击会在下拉中出现。Falsecreate方式添加的option只是显示在选框中,再次点击不会出现在下拉框中。

3、createOnBlur: true光标移除的时候自动创建输入的内容为选项,false不会创建。

4、sortField:{ //排序
field’text’, // text:依据文本排序,id:依据value排序
direction: ‘asc’ // 升序降序

5、dropdownParent’body’下拉选依据body生成。有时候设置了样式,其他的元素浮动在select标签上方,可能导致下拉框下沉显示不出来,设置该属性则不会存在这个问题。

6、maxItems3多选的时候设置最大选择数量

事件:

1、onChange        : eventHandler('onChange'),

2、onItemAdd       : eventHandler('onItemAdd'),

3、onItemRemove    : eventHandler('onItemRemove'),

4、onOptionAdd     : eventHandler('onOptionAdd'),

5、onOptionRemove  : eventHandler('onOptionRemove'),

6、onDropdownOpen  : eventHandler('onDropdownOpen'),

7、onDropdownClose : eventHandler('onDropdownClose'),

8、onFocus         : eventHandler('onFocus'),

9、onBlur          : eventHandler('onBlur'),

10、onInitialize    : eventHandler('onInitialize'),

事件运用示例:

控制台输出事件名和一个Object:

var eventHandler = function(name) {
    return function() {
        console.log(name, arguments);
        $('#log').append('<div><span class="name">' + name + '</span></div>');
    };
};

注:该方法定义需要放在事件调用之前。

selectize插件API:

selectize对象的方法,插件已经给出来的方法。

获取selectize对象:

var $select = $('#select-beast').selectize({
    create: true,
    sortField: {
        field: 'text',
        direction: 'asc'
    },
    dropdownParent: 'body'
});
var control = $select[0].selectize;

API:

1、clear():清除选择的option

control.lock();

绑定在JQuery事件上使用:

$('#button-clear').on('click', function() {
    control.lock();
});

2、clearOptions():清除select下的option,清除之后就没有任何option可选了

3、addOption():添加option

4、addItem(2):选择value=’2’的option

5、setValue([2, 3]):多选的时候选中value=’2’和’3’的option

根据selectize事件和API动态加载option示例:

有如下两个select选框

<select id="area">
<option value="">请选择地域</option>
<option value="0">重庆</option>
<option value="1">四川</option>
</select>
<select id="city">
<option value="">请选择省会</option>
<option value="0">上海</option>
<option value="1">北京</option>
<option value="2">天津</option>
<option value="3">重庆 </option>
</select>

情景一、request中包含了页面需要的数据:

<script>
var options = [];
<c:forEach items="${areaList}" var="area">
options.push({
id : "${area.areaId}",
title : "${area.name}"
});
</c:forEach>
$('#area).selectize({
	valueField: 'id',
	labelField: 'title',
	searchField: 'title',
	sortField: 'title',
	options: options,
	create: false,
	dropdownParent : 'body',
});
</script>


情景二、Ajax动态请求数据,根据地域选省会

<script>
var eventHandler = function(name) {
	return function() {
		console.log(name);
		getCity();
	};
};
var $area = $('#area).selectize({
	valueField: 'id',
	labelField: 'title',
	searchField: 'title',
	sortField: 'title',
	options: [],
	create: false,
	dropdownParent : 'body',
onFocus : eventHandler('onFocus'),
});
var control = $area[0].selectize;
function getCity(){
var area = $(“#area”).val();
$.ajax({
	url: "${basePath}getCity.do",
	type: "post",
	dataType: "json",
	async: false,
	data: {
		'area': area
	},
	success: function(res) {
// res是list集合中存放map,map key:cityId,map value:cityName
		// 重新生成option之前先清除前面生成的option
		control.clearOptions();
		for(var i = 0; i < res.length; i++){
			control.addOption({
				id : res[i]["cityId"],
				title : res[i]["cityName"],
			});
		}
	},
	error: function() {
		alert("error");
	}
});
}
</script>


可能遇到的问题:

1、插件放到自己的程序后提示有selectize.default.css或者selectize.legacy.css还有其他css文件找不到,确保如图所示的两个href路径正确

2、调整样式,使用自己想要的样式在如图所示的位置:

暂时就只研究了这些,更多的内容,有兴趣的小伙伴可以再去深入的研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值