formSelect.js 下拉选择器使用文档

当前版本:v1.0.4

快速使用

下载地址: Gitee(码云) star fork

使用文档: Gitee Page

使用方式:

1. 引入layui.js
<script src="../assets/layui/layui.js"></script>

2. 在页面上添加input
<input type="text" id="tree" lay-filter="tree" class="layui-input"<

3. 加载formSelect模块
layui.config({
    base: "../module/"
}).extend({
    treeSelect: "treeSelect/treeSelect"
});

4. 初始化
layui.use(["treeSelect"], function () {
    var treeSelect = layui.treeSelect;

    treeSelect.render({
        // 选择器
        elem: '#tree',
        // 数据
        data: 'data/data3.json',
        // 异步加载方式:get/post,默认get
        type: 'get',
        // 占位符
        placeholder: '修改默认提示信息',
        // 是否开启搜索功能:true/false,默认false
        search: true,
        // 一些可定制的样式
        style: {
            folder: {
                enable: true
            },
            line: {
                enable: true
            }
        },
        // 点击回调
        click: function(d){
            console.log(d);
        },
        // 加载完成后的回调函数
        success: function (d) {
            console.log(d);
//                选中节点,根据id筛选
            treeSelect.checkNode('tree', 3);

            console.log($('#tree').val());

//                获取zTree对象,可以调用zTree方法
           var treeObj = treeSelect.zTree('tree');
           console.log(treeObj);

//                刷新树结构
           treeSelect.refresh('tree');
        }
    });
});
            
参数配置
属性名 说明 默认值 示例
elem 指定原始input的选择器,必填 / '#input'
data 异步数据地址,必填 / 'data/data3.json'
headers 请求头 / {'token': 'xxx'}
type 异步请求方式:get/post 'get' 'get'
placeholder 占位符,input的提示文字 '请选择' '修改默认提示信息'
search 是否开启搜索:true/false true true
style 样式定制项 / 详见style参数
click 点击回调函数 / 详见click回调
success 渲染完成回调函数 / 详见success回调
样式定制项

支持一些简单的样式定制,后期版本将引入三方图标库并支持图标的自定义

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',
    style: {
        folder: { // 父节点图标
            enable: true // 是否开启:true/false
        },
        line: { // 连接线
            enable: true // 是否开启:true/false
        }
    },
});
            
点击回调

树节点被点击时触发,返回一个object参数,携带三个成员:

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    click: function(d){
        console.log(d);
        console.log(d.treeId); // 得到组件的id
        console.log(d.current); // 得到点击节点的treeObj对象
        console.log(d.data); // 得到组成树的数据
    },
});
            
渲染完成后回调

组件渲染完成后触发,返回一个object参数,携带两个成员:

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    success: function(d){
        console.log(d);
        console.log(d.treeId); // 得到组件的id
        console.log(d.data); // 得到组成树的数据
    },
});
            
选中节点

由于该组件采用异步加载机制,因此该方法应保证在渲染完成后再执行

需要两个参数,分别为lay-filter的值、节点id(异步加载数据的id)

treeSelect.checkNode('tree', 3);
            

如果需要立即执行,例如更新时默认选中,应在success回调中执行

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    success: function(d){
        treeSelect.checkNode('tree', 3);
    },
});
            
刷新树结构

由于该组件采用异步加载机制,因此该方法应保证在渲染完成后再执行

需要一个参数,即lay-filter的值

treeSelect.refresh('tree');
                

如果需要立即执行,应在success回调中执行

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    success: function(d){
        treeSelect.refresh('tree');
    },
});
            
获取ZTree对象

由于该组件采用异步加载机制,因此该方法应保证在渲染完成后再执行

需要一个参数,即lay-filter的值

var treeObj = treeSelect.zTree('tree');
console.log(treeObj);
                

如果需要立即执行,应在success回调中执行

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    success: function(d){
        var treeObj = treeSelect.zTree('tree');
        console.log(treeObj);
    },
});
            
销毁formSelect组件

需要一个参数,即lay-filter的值

treeSelect.destroy('tree');
            

如果需要立即执行,应在success回调中执行

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    success: function(d){
        treeSelect.destroy('tree');
    },
});
            
撤销选中的节点

需要两个参数,分别为lay-filter的值、回调函数,其中回调函数允许不传

treeSelect.revokeNode('tree', function(d){
    console.log(d);
    console.log(d.treeId);
});
            

如果需要立即执行,应在success回调中执行

treeSelect.render({
    // 选择器
    elem: '#tree',
    // 数据
    data: 'data/data3.json',    
    success: function(d){
        treeSelect.revokeNode('tree', function(d){
            console.log(d);
            console.log(d.treeId);
        });
    },
});
            
写在最后

一个人的力量总是有限的,不能满足所有人的要求。
如果您对该组件感兴趣或是觉得代码有改进与调整的地方,欢迎fork。