DropDownList

FineUI. DropDownList

Description:
Examples

使用一维数组作为数据源(数组项同时作为 value 和 text):

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '性别', data: ['全部', '男', '女']
});

使用二维数组作为数据源([value, text] 配对):

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '城市',
	data: [['bj', '北京'], ['sh', '上海'], ['gz', '广州'], ['sz', '深圳']],
	value: 'sh'
});

禁用单个选项:默认 fields=['value','text','enabled','display','group','prefix','attrs'](7 项),若数据只用到前 3 个字段,建议显式重写 fields 来精简数据。enabled 字段设为 false 即禁用该项:

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '城市',
	fields: ['value', 'text', 'enabled'],
	data: [
		['bj', '北京'],                          // 省略第 3 项 → enabled=true
		['sh', '上海(暂不可选)', false],        // 第 3 项 enabled=false → 此项被禁用
		['gz', '广州'],
		['sz', '深圳']
	]
});

使用multiSelect: true开启多选,multiSelectMode: 'tags'以标签形式显示:

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '兴趣',
	data: [['music', '音乐'], ['sport', '运动'], ['read', '阅读'], ['travel', '旅行']],
	multiSelect: true, multiSelectMode: 'tags'
});

使用editable: true允许手工输入,forceSelection: false不强制选择列表项:

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '城市',
	data: ['北京', '上海', '广州'], editable: true, forceSelection: false
});

通过change事件监听选中项变化:

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '城市',
	data: [['bj', '北京'], ['sh', '上海']],
	listeners: {
		change: function (event) {
			FineUI.alert('选中值:' + this.getValue() + ',文本:' + this.getText());
		}
	}
});

使用group: true启用分组。默认 fields=['value','text','enabled','display','group','prefix','attrs'](group 是第 5 个),实际使用中建议显式重写fields来精简数据:

FineUI.create({
	type: 'DropDownList', renderTo: document.body, fieldLabel: '老师', group: true,
	fields: ['value', 'text', 'group'],
	data: [
		['101', '张萍萍', '材料科学与工程系'],
		['102', '陈飞', '化学系'],
		['103', '董婷婷', '化学系'],
		['104', '康颖颖', '数学系'],
		['105', '彭博', '数学系'],
		['106', '唐超', '物理系']
	]
});
Parameters:
Name Type Description
options Object

初始参数

Properties
Name Type Default Description
value string | Array.<string>

选中的值

text string

显示文本(仅在editable==true&&forceSelection==false时有效)

fields Array.<string> ['value','text','enabled','display','group','prefix','attrs'

数据源对应的字段

data Array.<string>

数据源(一维数组:['全部','男','女'],或者二维数组:[['value1','可选项1'], ['value2','可选项2'], ['value3','可选项3']])

matchFieldWidth boolean true

下拉列表和表单字段的宽度相匹配

editable boolean false

是否可以编辑(手工输入)

forceSelection boolean true

是否强制从下拉列表中选择一项

multiSelect boolean false

是否允许多选

multiSelectSeparator string ',

' - 多选的文本分隔符(默认值为 ', ')

multiSelectMode string 'text'

启用多选时的显示模式(可选项为:text, tags)

userInputPrefix string '__USERINPUT'

用户输入值的前缀(仅在启用多选标签模式时有效)

clearIcon boolean false

是否自动显示清空图标

maxPopHeight number 300

弹出面板的最大高度

hiddenName string ''

用来存放下拉框 input 节点的 name 属性

checkboxSelect boolean false

是否显示列表项前面的复选框图标

group boolean false

是否启用分组

simulateTree boolean false

是否启用模拟树(如果启用,则在 prefix 字段位置存放树节点的层级,从 0 开始)

topSpaceFirst boolean false

优先使用上部空间显示弹出框

enableClickAction boolean true

点击输入框是否触发默认行为

changeOnDblClick boolean false

双击改变选中项(配合参数enableClickAction=false使用)

filter F_DropDownList_filter

自定义过滤器函数

type string 'DropDownList'

控件类型

Extends

Members

bodyEl :jQuery

Description:
  • 字段主体对应的jQuery节点对象

Inherited From:

字段主体对应的jQuery节点对象

Type:
  • jQuery

el :jQuery

Description:
  • 控件对应的jQuery节点对象

Inherited From:

控件对应的jQuery节点对象

Type:
  • jQuery

items :Object

Description:
  • 子控件列表

Inherited From:

子控件列表

Type:
  • Object

Methods

getEncodedText(text) → {string}

Description:
  • 获取编码后的字符串

Inherited From:
Parameters:
Name Type Description
text string

原始字符串

Returns:

编码后的字符串

Type
string

getFormFields() → {Array.<FineUI.Field>}

Description:
  • 获取容器内(深度遍历)所有表单字段实例(FineUI.Field的子类,如TextBox/NumberBox/DatePicker等)

Inherited From:
Example

遍历表单全部字段,序列化为 name → value 的对象(用于自定义 ajax 提交;字段未声明name时改用id):

var values = {};
FineUI.ui.form1.getFormFields().forEach(function (field) {
    values[field.name || field.id] = field.getValue();
});
// values 形如:{ tbxUserName: 'FineUIPro', numberAge: 30, ... }
Returns:

表单字段数组

Type
Array.<FineUI.Field>

getItem(value) → {FineUI.Component}

Description:
  • 获取子控件(按索引/标识符/匹配函数查找;通常配合items无显式 id 的场景,比按FineUI.ui[id]更精准)

Inherited From:
Examples

按索引取第一个子控件:

var firstChild = FineUI.ui.toolbar1.getItem(0);

按 id 取子控件:

var btn = FineUI.ui.toolbar1.getItem('btnSave');

按匹配函数找第一个匹配的子控件(函数对每项返回 true 即匹配):

var btn = FineUI.ui.toolbar1.getItem(function (item) {
    return item.type === 'Button' && item.text === '保存';
});
Parameters:
Name Type Description
value number | string | function

子控件索引、标识符或者匹配函数

Returns:

子控件实例

Type
FineUI.Component

getTextByValue(value) → {string}

Description:
  • 获取值对应的显示文本

Parameters:
Name Type Description
value string

Returns:

值对应的显示文本

Type
string

getValueByText(text) → {string}

Description:
  • 获取显示文本对应的值

Parameters:
Name Type Description
text string

显示文本

Returns:

显示文本对应的值

Type
string

hidePopEl()

Description:
  • 隐藏弹出框

Overrides:

isType(value) → {boolean}

Description:
  • 检测当前实例是否指定的控件类型

Inherited From:
Example
grid1.isType('panel') // 返回true
grid1.isType('grid')  // 返回true
Parameters:
Name Type Description
value Object

控件类型

Returns:

如果当前实例是指定的控件类型,返回true;否则返回false

Type
boolean

isUserInput() → {boolean}

Description:
  • 是否为用户自行输入值

Returns:

是否为用户自行输入值

Type
boolean

loadData(data, valueopt)

Description:
  • 加载数据(会替换下拉项;常用于级联下拉:在父下拉change事件中调用子下拉的loadData

Examples

省市县级联:选择省份后刷新城市下拉项:

FineUI.create({
    type: 'DropDownList', id: 'ddlSheng',
    data: [['bj', '北京'], ['shanghai', '上海'], ['guangdong', '广东']],
    listeners: {
        change: function () {
            var province = this.getValue();
            var cityData = getCitiesByProvince(province);
            FineUI.ui.ddlCity.loadData(cityData, '-1');  // 第二个参数指定默认选中
        }
    }
});

仅替换下拉项,不预设选中:

FineUI.ui.ddlCategory.loadData([
    ['fruit', '水果'],
    ['vegetable', '蔬菜']
]);
Parameters:
Name Type Attributes Description
data Array.<Object>

数据

value string | Array.<string> <optional>

选中的值(默认选中项)

showPopEl()

Description:
  • 显示弹出框

Events

beforehide

Description:
  • 隐藏控件之前触发(返回false则取消隐藏操作)

Inherited From:

beforeselect

Description:
  • 选中列表项之前触发(返回false则取消选中操作)

Parameters:
Name Type Description
event jQuery.Event

事件对象

selectedValue string

即将选中的值

originalValue string

原来的值

beforeshow

Description:
  • 显示控件之前触发(返回false则取消显示操作)

Inherited From:

blur

Description:
  • 输入框失去焦点时触发(常用于失焦校验或失焦联动)

Inherited From:
Example

失焦触发字段校验(仅校验当前字段,不影响整表):

FineUI.create({
    type: 'TextBox', fieldLabel: '邮箱', regex: /^[\w.]+@[\w.]+$/,
    listeners: {
        blur: function () {
            this.validate();
        }
    }
});
Parameters:
Name Type Description
event jQuery.Event

事件对象

change

Description:
  • 输入框值改变时触发(失焦或回车后;继承到所有 TextBox 派生类如NumberBox/DatePicker/DropDownList

Inherited From:
Example

响应值变化做联动:

FineUI.create({
    type: 'TextBox', fieldLabel: '关键字',
    listeners: {
        change: function () {
            FineUI.ui.grid1.loadDataUrl('/api/search', { q: this.getValue() });
        }
    }
});
Parameters:
Name Type Description
event jQuery.Event

事件对象

cleariconclick

Description:
  • 点击清空图标时触发

Parameters:
Name Type Description
event jQuery.Event

事件对象

enter

Description:
  • 输入框获取焦点并按下 ENTER 键时触发(常用于"搜索框回车提交"或"密码框回车登录")

Inherited From:
Example

搜索框回车触发搜索(也可改用配置属性enterClickControl声明式实现):

FineUI.create({
    type: 'TextBox', fieldLabel: '关键字',
    listeners: {
        enter: function () {
            FineUI.ui.btnSearch.click();
        }
    }
});
Parameters:
Name Type Description
event jQuery.Event

事件对象

focus

Description:
  • 输入框获取焦点时触发

Inherited From:
Parameters:
Name Type Description
event jQuery.Event

事件对象

hide

Description:
  • 隐藏控件时触发

Inherited From:

layout

Description:
  • 布局控件时触发

Inherited From:

remove

Description:
  • 移除控件时触发(调用 remove() 时,控件 DOM 被销毁之前触发;可用于清理外部资源 / 解绑全局事件)

Inherited From:

render

Description:
  • 渲染控件时触发

Inherited From:

select

Description:
  • 选中列表项时触发

Parameters:
Name Type Description
event jQuery.Event

事件对象

selectedValue string

选中的值

originalValue string

原来的值

show

Description:
  • 显示控件时触发

Inherited From:

tagclose

Description:
  • 关闭某个标签时触发(仅在启用多选标签模式时有效)

Parameters:
Name Type Description
event jQuery.Event

事件对象

tagValue string

关闭标签的值

tagText string

关闭标签的显示文本

trigger1click

Description:
  • 点击第一个触发图标时触发

Inherited From:
Parameters:
Name Type Description
event jQuery.Event

事件对象

trigger2click

Description:
  • 点击第二个触发图标时触发

Inherited From:
Parameters:
Name Type Description
event jQuery.Event

事件对象

triggerclick

Description:
  • 点击触发图标时触发

Inherited From:
Parameters:
Name Type Description
event jQuery.Event

事件对象