npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

yd-treeselect

v1.0.3

Published

下拉树组件

Downloads

3

Readme

ydTreeSelect

ydTreeSelect 提供可以在下拉框中选择的树,支持单选、多选以及其他常用设置。

引入组件库

  • ydTreeSelect 只包含一个 js 文件 ydl.treeselect.js,或者使用压缩的版本 ydl.treeselect.min.js
  • ydTreeSelect 依赖 jQueryzTree,使用时必须先加载 jquery.js 和 zTree 的 js 和 css 文件,并且能引用到 zTree 的相关图片

在HTML页面中引入

  • 请将必需的库文件放到合适的目录下,然后在页面中引入
<link rel="stylesheet" href="ztree.css" />
<script src="jquery.min.js"></script>
<script src="jquery.ztree.all.min.js"></script>
<script src="ydl.treeselect.js"></script>

在YDPX页面中引入

  • 相关的库文件已经包含在 yd-ydpx.jar 中,直接引入即可
  • 可以选择 ztree1.css 或 ztree2.css 两种树的样式
<styles>
  <style include="ztree1.css" />
</styles>
<scripts>
  <script include="ztree.js" />
  <script include="ydl.treeselect.js" />
  <script>
  ……
  </script>
</scripts>

初始化组件

  • 通过ydTreeSelect方法,可以将一个普通文本框初始化为下拉树组件
  • 在HTML页面中,可以把初始化代码写在页面加载完成后的事件处理函数中
  • 在YDPX页面中,可以把初始化代码写在pageOnload回调函数中

默认初始化

  • 下拉树目前只支持一次性加载全部数据,数据中必须包含id、pId、name三个属性,还可以包含其他业务字段,通过组件方法的第一个参数传递数据
<input type="text" id="input1" />
var data1 = [
    {id: 1, pId: 0, name: '北京'},
    {id: 2, pId: 0, name: '天津'},
    {id: 5, pId: 0, name: '河北省'},
    {id: 51, pId: 5, name: '石家庄'},
    {id: 52, pId: 5, name: '保定'},
    {id: 6, pId: 0, name: '广东省'},
    {id: 61, pId: 6, name: '广州'},
    {id: 62, pId: 6, name: '深圳'}
];
$('#input1').ydTreeSelect(data1);
  • 支持使用相同的数据和参数同时将多个文本框初始化为下拉树组件
$('#input1,#input2').ydTreeSelect(data1);

自定义初始化参数

  • 通过组件方法的第二个参数,可以在初始化时传递自定义设置参数,例如
var data2 = [
	{id: 1, pId: 0, name: '北京', areacode: '010'},
	{id: 2, pId: 0, name: '天津', areacode: '022'},
	{id: 3, pId: 0, name: '上海', areacode: '021'},
	{id: 4, pId: 0, name: '重庆', areacode: '023'},
	{id: 5, pId: 0, name: '河北省', areacode: '03xx'},
	{id: 51, pId: 5, name: '石家庄', areacode: '0311'},
	{id: 52, pId: 5, name: '保定', areacode: '0312'},
	{id: 53, pId: 5, name: '邯郸', areacode: '0310'},
	{id: 54, pId: 5, name: '承德', areacode: '0314'},
	{id: 6, pId: 0, name: '广东省', areacode: '07xx'},
	{id: 61, pId: 6, name: '广州', areacode: '020'},
	{id: 62, pId: 6, name: '深圳', areacode: '0755'},
	{id: 63, pId: 6, name: '东莞', areacode: '0769'},
	{id: 64, pId: 6, name: '佛山', areacode: '0757'},
	{id: 7, pId: 0, name: '福建省', areacode: '059x'},
	{id: 71, pId: 7, name: '福州', areacode: '0591'},
	{id: 72, pId: 7, name: '厦门', areacode: '0592'},
	{id: 73, pId: 7, name: '泉州', areacode: '0595'},
	{id: 74, pId: 7, name: '三明', areacode: '0598'}
];
//在树上显示单选按钮,返回选中节点的电话区号,选中后自动关闭下拉面板
$('#input1').ydTreeSelect(data2, {
	type: 'radio',
	retAttr: 'areacode',
	hideOnCheck: true
});
  • 所有的初始化参数如下表所示

| 参数名 | 缺省值 | 参数含义 |--------------|------------|---------------------------------------------------------------------------------- | width | undefined | 设置下拉面板宽度,一般不需要设置此参数,缺省为自动,与文本框同宽 | height | 300 | 设置下拉面板高度 | zIndex | 10 | 叠放顺序,当被其他组件遮挡时才需要设置;当文本框在模态框(.modal)中时会自动调整 | type | 'checkbox' | 选项类型:单选'radio',复选'checkbox' | checkParent | false | 是否可选择父节点(如果是异步加载树节点,此参数无效,需要使用者自行编码处理排除父节点) | retAttr | name | 选中后返回的属性 | expand | true | 初始时是否展开全部节点(在异步加载树节点时此参数无效) | trigger | null | 点击时显示下拉面板的触发元素id或对象,null为文本框的下一个紧邻元素,空串为不设置触发元素(当不想将下一个紧邻元素作为触发元素时使用) | showOnFocus | true | 获得焦点时是否显示下拉面板,如果设为false,则只能通过触发元素或show方法显示 | hideOnCheck | false | 选中后是否自动关闭下拉面板 | cloneData | false | 是否使用克隆的数据,只有在使用同一组数据初始化多个组件,且参数不同或需要手工调整数据时才需要设置,以防止原始数据被修改,造成多个组件互相影响,在大数据量的情况下可能影响性能;在异步加载树节点时无需配置此参数 | init | null | 组件初始化之前的回调函数,init: function (treeSettings, treeData) { },参数是zTree初始化参数和树数据,可以在创建树之前进行修改(如果设置了cloneData: true,这里就是克隆后的数据,修改它不会影响原数据对象),不需要返回值,上下文对象是文本框,在这个函数里可以返回一个新的对象作为树的初始化参数,或者修改原有参数对象 | inited | null | 组件初始化之后的回调函数,inited: function ($tree, $panel) { },参数是zTree对象和下拉面板对象,不需要返回值,上下文对象是文本框 | shown | null | 下拉面板显示后的回调函数,shown: function ($tree, $panel) { },参数是zTree对象和下拉面板对象,不需要返回值,上下文对象是文本框 | hidden | null | 下拉面板隐藏后的回调函数,hidden: function ($tree, $panel) { },参数是zTree对象和下拉面板对象,不需要返回值,上下文对象是文本框 | check | null | 勾选或取消勾选复选框之前的回调函数,check: function ($tree, node, isCheck) { return true; },参数是zTree对象、树节点对象、当前操作是否为选择(true=选择,false=取消选择),需要返回true/false,返回false可阻止选择,上下文对象是文本框 | checked | null | 勾选或取消勾选复选框之前的回调函数,checked: function ($tree, node, isCheck) { },参数是zTree对象、树节点对象、当前操作是否为选择(true=选择,false=取消选择),不需要返回值,上下文对象是文本框 | selector | 'body' | 指定新创建的下拉面板所属的父元素选择器,此参数影响滚动时定位,应设为与文本框最近的可滚动父元素 | modalClass | 'modal' | 模态框样式名,用于识别文本框是否在模态框内,缺省为bootstrap使用的.modal样式,如果模态框使用其他实现方式,请配置这个参数;设为null则不对模态框进行处理

组件接口方法

  • 组件接口方法通过 $(input).ydTreeSelect('方法名', 其他参数...) 调用
  • 方法名不区分大小写
  • 必须先对组件进行初始化成功后,才能调用组件方法
  • 除了取值方法(如getValue)以外,其他所有方法的返回值均是当前组件自身,以支持链式操作,例如
//在输入框input1的下拉树中选中id为15的节点,然后给文本框设置焦点
$('#input1').ydTreeSelect('setValue', '15').focus();

show

  • 显示下拉面板
$('#input1').ydTreeSelect('show');

hide

  • 隐藏下拉面板
$('#input1').ydTreeSelect('hide');

expand

  • 展开全部树节点
$('#input1').ydTreeSelect('expand');
//或者
$('#input1').ydTreeSelect('expand', true);
  • 收起全部树节点
$('#input1').ydTreeSelect('expand', false);

attr

  • 设置组件属性
  • 目前只支持设置只读属性readonly,如果设置readonly为true,将不能显示下拉面板进行选择,设置readonly为false后即可恢复下拉选择
  • 设置只读
$('#input1').ydTreeSelect('attr', 'readonly', true);
  • 取消只读
$('#input1').ydTreeSelect('attr', 'readonly', false);

setValue

  • 调用方法:$(input).ydTreeSelect('setValue', 树节点关键属性值, 关键属性名);

  • 关键属性值可以是半角逗号分隔的字符串,也可以是字符串数组

  • 关键属性名可以省略,缺省为id

  • 选中指定id的树节点

//选中id分别为2、52、61的树节点
$('#input1').ydTreeSelect('setValue', '2,52,61');
//或者
$('#input1').ydTreeSelect('setValue', ['2', '52', '61']);
  • 选中指定属性的树节点
//选中name分别为'北京'、'上海'的树节点
$('#input1').ydTreeSelect('setValue', '北京,上海', 'name');
//或者
$('#input1').ydTreeSelect('setValue', ['北京','上海'], 'name');
//选中areacode分别为'0310'、'0755'、'0592'的树节点
$('#input2').ydTreeSelect('setValue', '0310,0755,0592', 'areacode');
//或者
$('#input2').ydTreeSelect('setValue', ['0310','0755','0592'], 'areacode');
  • 支持同时给多个下拉树组件统一设置相同的值
//在input1和input2的下拉树中分别选中id为2、52、61的树节点
$('#input1,#input2').ydTreeSelect('setValue', '2,52,61');

getValue

  • 调用方法:var values = $(input).ydTreeSelect('getValue', 树节点关键属性名);

  • 关键属性名可以省略,缺省为id

  • 返回值是所有已选中节点指定属性值的数组,如果需要逗号分隔的字符串,可以再自行.join(',')

  • 获取下拉树已选中节点的指定属性值数组

//缺省返回id的数组
var values = $('#input1').ydTreeSelect('getValue');
//结果:values = ['2', '52', '61']

//返回逗号分隔的字符串
var values = $('#input1').ydTreeSelect('getValue').join(',');
//结果:values = '2,52,61'
//指定返回name的数组
var values = $('#input1').ydTreeSelect('getValue', 'name');
//结果:values = ['天津', '保定', '广州']
//指定返回areacode的数组
var values = $('#input2').ydTreeSelect('getValue', 'areacode');
//结果:values = ['022', '0312', '020']

get

  • 获取组件内部对象,可获取的对象包括:
    • panel 下拉面板对象
    var $panel = $('#input1').ydTreeSelect('get', 'panel');
    • trigger 触发元素对象
    var $trigger = $('#input1').ydTreeSelect('get', 'trigger');
    • tree zTree树对象
    var $tree = $('#input1').ydTreeSelect('get', 'tree');
    • settings 初始化设置选项
    var settings = $('#input1').ydTreeSelect('get', 'settings');
    • treeSettings 树初始化参数设置选项
    var settings = $('#input1').ydTreeSelect('get', 'treeSettings');

destroy

  • 销毁下拉树组件,恢复成原始的文本输入框
  • 组件销毁之后,就无法再对其使用组件方法。不过根据需要,还可以重新调用初始化方法,再次将文本框初始化成下拉树组件
  • 当需要删除原始文本框的时候,才需要调用销毁方法,以避免内存泄露;如果只是临时禁用下拉树,请使用设置只读的方法
$('#input1').ydTreeSelect('destroy');

setDefaults

  • 修改全局默认初始化参数,对设置之后所有初始化的下拉树组件生效
  • 调用时可不必指定具体文本框元素,使用$()即可
  • 如果需要使用此方法的话,建议写在项目公共的脚本中,对整个项目中的下拉树组件统一设置
$().ydTreeSelect('setDefaults', {
	checkParent: true
	selector: '#page_main'
});

版权所有

©华信永道(北京)科技股份有限公司