Go to file
maplemei 2746d723d2 v1.0.2
1. [修改]搜索时输入中文延迟后才进行回显
2. [修改]远程搜索时, loading状态也能进行输入的问题
3. [修改]单选模式下, 前面的图标变成圆形
4. [修改]修正Windows下的一些样式错乱, 兼容IE10以上
5. [修改]启动分页, 当搜索时, 如果搜索总页码为0, 再次搜索有页码时, 当前页面为0的问题
6. [修改]当底部空间不足时, 再次判断顶部空间是否充足, 优化展开方向
2019-09-23 20:10:40 +08:00
.gitee Initial commit 2019-04-29 14:30:04 +08:00
dist v1.0.2 2019-09-23 20:10:40 +08:00
docs v1.0.2 2019-09-23 20:10:40 +08:00
src v1.0.2 2019-09-23 20:10:40 +08:00
.babelrc init 2019-04-30 11:07:58 +08:00
.gitignore init 2019-04-30 11:07:58 +08:00
index.html v1.0.0.0729 2019-07-29 10:58:22 +08:00
LICENSE init 2019-04-30 11:07:58 +08:00
package.json init 2019-04-30 11:07:58 +08:00
README.md v1.0.2 2019-09-23 20:10:40 +08:00
webpack.config.js init 2019-04-30 11:07:58 +08:00

xm-select

介绍

始于Layui, 下拉选择框的多选解决方案

前身formSelectes, 移除了对jquery的依赖, 提高渲染速度

xm-select演示站点

历史版本

前往formSelectes

联系方式

QQ群: 660408068

更新日志

软件架构

  1. 引入第三方preact库, 利用jsx渲染页面结构
  2. 使用webpack进行打包

快读上手

直接使用

1. 引入 `dist/xm-select.js`
2. 写一个`<div id="demo1"></div>`
3. 渲染
	var demo1 = xmSelect.render({
		el: '#demo1', 
		data: [
			{name: '水果', value: 1, selected: true, disabled: true},
			{name: '蔬菜', value: 2, selected: true},
			{name: '桌子', value: 3, disabled: true},
			{name: '北京', value: 4},
		],
   })

二次开发

1. git clone https://gitee.com/maplemei/xm-select.git
2. cd xm-select
3. yarn 或者 npm install

打赏

如果喜欢作者的插件, 可以请作者吃雪糕 ^_^

打赏

使用说明

默认配置项

{
	//多选数据
	data: [],
	//默认选中数据, 优先级大于selected
	initValue: null,
	//默认提示
	tips: '请选择', //please selected
	//空数据提示
	empty: '暂无数据', //no data
	//搜索延迟 ms
	delay: 500,
	//搜索默认提示
	searchTips: setting.searchTips,
	//是否开始本地搜索
	filterable: false,
	//本地搜索过滤方法
	filterMethod: function(val, item, index, prop){
		if(!val) return true;
		return item[prop.name].indexOf(val) != -1;
	},
	//是否开启远程搜索
	remoteSearch: false,
	//远程搜索回调
	remoteMethod: function(val, cb){
		//val: 搜索的值, cb: 回调函数
		cb([]);
	},
	//下拉方向
	direction: 'auto',
	//自定义样式
	style: {},
	//默认多选的高度
	height: '200px',
	//是否开启分页
	paging: false,
	//分页每页的条数
	pageSize: 10,
	//是否开启单选模式
	radio: false,
	//是否开启重复选模式
	repeat: false,
	//是否点击选项后自动关闭下拉框
	clickClose: false,
	//自定义属性名称
	prop: {
		name: 'name',
		value: 'value',
		selected: 'selected',
		disabled: 'disabled',
	},
	//主题配置
	theme: {
		color: '#009688',
	},
	//模型, 用来控制插件的显示方式, 标签/文字/汇总个数/自定义
	model: {
		label: {
			type: 'block',
			text: {
				left: '',
				right: '',
				separator: ', ',
			},
			block: {
				showCount: 0,
				showIcon: true,
			},
			count: {
				template(data, sels){
					return '已选中 '+sels.length+' 项, 共 '+data.length+' 项'
				}
			},
		},
	},
	
	// 展开下拉框
	show(){
		
	},
	// 隐藏下拉框
	hidn(){
		
	},
	// 模板组成, 当前option数据
	template({ item, sels, name, value }){
		return name;
	},
	//监听选中事件
	on({ arr, item, selected }){
		
	}
}

默认方法

//更新组件
xmSelect: update(options)

//重置组件
xmSelect: reset()

//重新渲染
xmSelect: render(options)

//主动关闭
xmSelect: opened()

//主动关闭
xmSelect: closed()

//获取已选中数据
xmSelect: getValue()

//设置选中数据, array: 选中数据, show: 是否展开下拉框
xmSelect: setValue(array, show)

示例

示例页面

一个小栗子

<!-- 占位 -->
<div id="demo1"></div>


<!-- 引入插件 -->
<script src="../dist/xm-select.js" type="text/javascript" charset="utf-8"></script>
<!-- 渲染页面 -->
<script type="text/javascript">
	var demo1 = xmSelect.render({
		// 这里绑定css选择器
		el: '#demo1', 
		// 渲染的数据
		data: [
			{name: '水果', value: 1, selected: true, disabled: true},
			{name: '蔬菜', value: 2, selected: true},
			{name: '桌子', value: 3, disabled: true},
			{name: '北京', value: 4},
		],
	})
	
	// 变量, demo1 可以通过API操作
	// 获取选中值, demo1.getValue();
	// 设置选中值, demo1.setValue([{ name: '动态值', value: 999 }])
	// ...
</script>