new DropDownBox(options)
- Description:
下拉框控件
Examples
使用popPanel挂载自定义弹出面板(例如挂一棵树)。树节点的 id 字段作为下拉框的值,text 字段作为显示文本:
FineUI.create({
type: 'Tree', id: 'tree1', hidden: true, width: 300, height: 250, header: false,
rootNode: {
expanded: true,
children: [{
text: '中国', id: 'china', expanded: true,
children: [
{ text: '河南省', id: 'henan', leaf: true },
{ text: '安徽省', id: 'anhui', leaf: true },
{ text: '广东省', id: 'guangdong', leaf: true }
]
}]
}
});
FineUI.create({
type: 'DropDownBox', renderTo: document.body, fieldLabel: '所属节点',
popPanel: 'tree1', value: 'henan' // value 对应树节点的 id
});
获取用户在树中选中的节点:getValue()返回选中节点的 id,getText()返回显示文本(要拿完整节点数据,用 FineUI.ui.tree1.getNodeData(id)):
FineUI.create({
type: 'Tree', id: 'tree1', hidden: true, width: 300, height: 250, header: false,
rootNode: {
expanded: true,
children: [
{ text: '河南省', id: 'henan', leaf: true },
{ text: '安徽省', id: 'anhui', leaf: true }
]
}
});
FineUI.create({
type: 'DropDownBox', id: 'ddb1', renderTo: document.body, fieldLabel: '所属省份', popPanel: 'tree1'
});
FineUI.create({
type: 'Button', renderTo: document.body, text: '获取选中节点',
handler: function () {
var ddb = FineUI.ui.ddb1;
var nodeId = ddb.getValue(); // 选中节点的 id
if (nodeId) {
var node = FineUI.ui.tree1.getNodeData(nodeId); // 完整节点数据
FineUI.alert('选中:' + ddb.getText() + '(id=' + nodeId + ',原始 text=' + node.text + ')');
} else {
FineUI.alert('未选中任何节点');
}
}
});
挂载 CheckBoxList 实现"多选下拉"。关键参数:multiSelect: true 启用多选、dataControl 指向数据控件 id、value 设初始选中值(数组,元素是 CheckBoxList 的 value):
FineUI.create({
type: 'DropDownBox', id: 'ddb2', renderTo: document.body, fieldLabel: '编程语言',
multiSelect: true, value: ['js', 'php'], // 初始选中 JavaScript 和 PHP
dataControl: 'checkboxlist1', // 指向下面的 CheckBoxList
popPanel: {
type: 'Form', hidden: true, layout: 'anchor', bodyPadding: 10, header: false,
items: [{
type: 'CheckBoxList', id: 'checkboxlist1', columnNumber: 3,
data: [
['csharp', 'C#'], ['js', 'JavaScript'], ['java', 'JAVA'],
['php', 'PHP'], ['python', 'Python'], ['go', 'Go']
]
}]
}
});
FineUI.create({
type: 'Button', renderTo: document.body, text: '获取选中项',
handler: function () {
var values = FineUI.ui.ddb2.getValue(); // 返回数组,例如 ['js', 'php']
FineUI.alert('选中:' + (values && values.length ? values.join(', ') : '无'));
}
});
与FineUI.DropDownList的区别:DropDownBox用于挂载任意弹出面板(树、表格、自定义 Panel),DropDownList仅用于"数据数组的下拉列表"。
// 复杂选择器场景下用 DropDownBox,简单列表场景下优先用 DropDownList
FineUI.create({
type: 'DropDownList', renderTo: document.body, fieldLabel: '简单列表', data: ['A', 'B', 'C']
});
Parameters:
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object | 初始参数 Properties
|
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
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
showPopEl()
- Description:
显示弹出框
Events
afterpoppanelshow
- Description:
[已废弃] 旧版本事件名,新代码请使用 FineUI.DropDownBox#event:poppanelshow。源码会同时触发两个事件名仅为兼容旧业务代码,未来版本可能移除。
- Deprecated:
Parameters:
| Name | Type | Description |
|---|---|---|
event |
jQuery.Event | 事件对象 |
beforehide
- Description:
隐藏控件之前触发(返回false则取消隐藏操作)
- Inherited From:
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:
poppanelshow
- Description:
显示弹出面板时触发
Parameters:
| Name | Type | Description |
|---|---|---|
event |
jQuery.Event | 事件对象 |
remove
- Description:
移除控件时触发(调用
remove()时,控件 DOM 被销毁之前触发;可用于清理外部资源 / 解绑全局事件)
- Inherited From:
render
- Description:
渲染控件时触发
- Inherited From:
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 | 事件对象 |