Toolbar

FineUI. Toolbar

工具栏控件。常作为 FineUI.PanelFineUI.Grid 等容器的 bars 属性挂载,可放置按钮、表单字段、FineUI.ToolbarTextFineUI.ToolbarFill 等任意子项。

相关在线示例

Constructor

new Toolbar(options)

Examples

工具栏通常作为FineUI.Panel/FineUI.Grid等控件的toolbars属性挂载:

FineUI.create({
	type: 'Panel', renderTo: document.body, width: 600, height: 200, title: '面板', bodyPadding: 10,
	bars: [{
		type: 'Toolbar', position: 'top',
		items: [
			{ type: 'Button', text: '新建', iconFont: 'plus' },
			{ type: 'Button', text: '编辑', iconFont: 'edit' },
			{ type: 'ToolbarSeparator' },
			{ type: 'Button', text: '删除', iconFont: 'remove' }
		]
	}]
});

使用align调整对齐方式(left/center/right),ToolbarFill把内容推到两侧:

FineUI.create({
	type: 'Panel', renderTo: document.body, width: 600, height: 150, title: '工具栏对齐', bodyPadding: 10,
	bars: [{
		type: 'Toolbar',
		items: [
			{ type: 'Button', text: '左' },
			{ type: 'ToolbarFill' },
			{ type: 'ToolbarText', text: '中间文本' },
			{ type: 'ToolbarFill' },
			{ type: 'Button', text: '右' }
		]
	}]
});

使用position: 'bottom'将工具栏放在面板底部:

FineUI.create({
	type: 'Panel', renderTo: document.body, width: 600, height: 200, title: '底部工具栏', bodyPadding: 10, content: '内容区域',
	bars: [{
		type: 'Toolbar', position: 'bottom', align: 'right',
		items: [
			{ type: 'Button', text: '取消' },
			{ type: 'Button', text: '确定', iconFont: 'check' }
		]
	}]
});
Parameters:
Name Type Description
options Object

初始参数

Properties
Name Type Default Description
position string 'top'

工具栏的位置(可选项为:top, bottom)

align string 'left'

工具栏中子项的对齐方式(可选项为:left, center, right)

itemSpace number 8

工具栏中子项之间的间距

title string ''

标题文本

type string 'Toolbar'

控件类型

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

add(value)

Description:
  • 添加新的子控件到当前控件(追加到子项末尾)

Inherited From:
Examples

向菜单末尾追加一个分隔符和一个新菜单项('-'MenuSeparator 的快捷字符串形式):

// 假设 menu1 当前 items 为:[菜单1, 菜单2]
FineUI.ui.menu1.add([
    '-',
    { type: 'MenuItem', text: '新菜单项', iconFont: 'plus' }
]);
// 追加后 items 顺序:[菜单1, 菜单2, ----, 新菜单项]

动态在工具栏末尾追加一个按钮:

FineUI.ui.toolbar1.add({
    type: 'Button', text: '导出', iconFont: 'download',
    handler: function () {
        FineUI.alert('导出');
    }
});
Parameters:
Name Type Description
value Object | Array.<Object>

控件实例(或控件实例数组,一次添加多个,按数组顺序追加)

addTool(item)

Description:
  • 添加工具图标

Inherited From:
Parameters:
Name Type Description
item FineUI.Tool

工具图标实例

clearDirty()

Description:
  • 清空容器内字段的改变状态(接受当前值为新的初始值;提交服务端成功后调用,isDirty随后会返回 false)

Inherited From:

collapse()

Description:
  • 折叠面板(程序触发;启用collapsible: true时有效)

Inherited From:
Example

程序折叠侧栏:

FineUI.ui.panelSide.collapse();

disable()

Description:
  • 禁用控件

Inherited From:

doLayout(startFormTopmostComonentopt)

Description:
  • 执行布局操作

Inherited From:
Parameters:
Name Type Attributes Default Description
startFormTopmostComonent boolean <optional>
false

从最顶层的控件开始布局

enable()

Description:
  • 启用控件

Inherited From:

expand()

Description:
  • 展开面板(与collapse对应)

Inherited From:

getAttr(key) → {string}

Description:
  • 获取节点属性

Inherited From:
Parameters:
Name Type Description
key string

节点属性键

Returns:

节点属性值

Type
string

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>

getHeight() → {number}

Description:
  • 获取控件高度

Inherited From:
Returns:

高度

Type
number

getIFrameEl() → {jQuery}

Description:
  • 获取内联框架元素

Inherited From:
Returns:

内联框架元素

Type
jQuery

getIFrameUrl() → {string}

Description:
  • 获取内联框架地址

Inherited From:
Returns:

内联框架地址

Type
string

getIFrameWindow() → {Window}

Description:
  • 获取内联框架窗体对象

Inherited From:
Returns:

内联框架窗体对象

Type
Window

getIconEl() → {jQuery}

Description:
  • 获取图标元素

Inherited From:
Returns:

图标元素

Type
jQuery

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

getScrollEl() → {jQuery}

Description:
  • 获取可滚动元素

Inherited From:
Returns:

可滚动元素

Type
jQuery

getTitle() → {string}

Description:
  • 获取面板标题

Inherited From:
Returns:

标题文本

Type
string

getTitleTooltip() → {string}

Description:
  • 获取面板标题提示信息

Inherited From:
Returns:

标题提示信息

Type
string

getTooltip() → {string}

Description:
  • 获取提示信息

Inherited From:
Returns:

提示信息

Type
string

getWidth() → {number}

Description:
  • 获取控件宽度

Inherited From:
Returns:

宽度

Type
number

hasHScrollbar() → {boolean}

Description:
  • 是否存在水平滚动条

Inherited From:
Returns:

是否存在水平滚动条

Type
boolean

hasIcon() → {boolean}

Description:
  • 是否有图标

Inherited From:
Returns:

是否有图标

Type
boolean

hasVScrollbar() → {boolean}

Description:
  • 是否存在垂直滚动条

Inherited From:
Returns:

是否存在垂直滚动条

Type
boolean

hide()

Description:
  • 隐藏面板

Inherited From:

hideLoading()

Description:
  • 隐藏加载动画

Inherited From:

hidePopEl()

Description:
  • 隐藏容器内的所有弹出框

Inherited From:

insert(insertIndex, value)

Description:
  • 插入新的子控件到当前控件

Inherited From:
Examples

向菜单的开头插入一个新菜单项和一个分隔符('-'MenuSeparator 的快捷字符串形式):

// 假设 menu1 当前 items 为:[菜单1, 菜单2, 菜单3]
FineUI.ui.menu1.insert(0, [
    { type: 'MenuItem', text: '新增', iconFont: 'plus' },
    '-'
]);
// 插入后 items 顺序:[新增, ----, 菜单1, 菜单2, 菜单3]

在工具栏第 2 项位置插入一个分隔符和一个新按钮(Toolbar 中的'-'ToolbarSeparator 的快捷字符串形式):

FineUI.ui.toolbar1.insert(2, [
    '-',
    { type: 'Button', text: '新增', iconFont: 'plus' }
]);
Parameters:
Name Type Description
insertIndex number

插入的位置(从 0 开始;如果 ≥ 当前子项数量,则追加到末尾)

value Object | Array.<Object>

控件实例(或控件实例数组,一次插入多个,按数组顺序)

insertTool(insertIndex, item)

Description:
  • 插入工具图标

Inherited From:
Parameters:
Name Type Description
insertIndex number

插入的位置

item FineUI.Tool

工具图标实例

isCollapsed() → {boolean}

Description:
  • 是否处于折叠状态

Inherited From:
Returns:

折叠状态

Type
boolean

isDirty() → {boolean}

Description:
  • 容器内的表单字段是否已经改变(任意字段值与初始值不同时返回 true,可用于提示"未保存")

Inherited From:
Returns:

容器内的表单字段是否已经改变

Type
boolean

isDisabled() → {boolean}

Description:
  • 是否禁用

Inherited From:
Returns:

是否禁用

Type
boolean

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

isValid(onlyFirstInvalidFieldopt) → {Array.<Object>}

Description:
  • 容器内的表单字段是否有效(会同时触发各字段的校验提示显示;常配合ButtonvalidateForm属性自动调用)

Inherited From:
Examples

提交按钮显式校验(不依赖validateForm属性):

FineUI.create({
    type: 'Button', text: '提交',
    handler: function () {
        var result = FineUI.ui.form1.isValid();
        if (result[0]) {
            // 校验通过 → 提交逻辑
        } else {
            // result[1] 是第一个无效字段,可聚焦提示
            result[1].focus();
        }
    }
});

仅检查"是否有效"(推荐的更常用方式:让 Button 的validateForm自动校验,handler 仅在通过时执行):

FineUI.create({
    type: 'Button', text: '提交', validateForm: 'form1',
    handler: function () {
        // 走到这里说明 form1 已校验通过
    }
});
Parameters:
Name Type Attributes Default Description
onlyFirstInvalidField boolean <optional>
false

是否仅返回第一个无效的字段

Returns:

校验结果数组:第一项是布尔值(是否全部有效),其后是无效字段实例([isValid, firstInvalidField, secondInvalidField, ...])

Type
Array.<Object>

isVisible() → {boolean}

Description:
  • 是否可见

Inherited From:
Returns:

是否可见

Type
boolean

off(eventNames, fnopt)

Description:
  • 移除事件

Inherited From:
Examples

移除特定回调:

function onMyClick() { ... }
FineUI.ui.btn1.on('click', onMyClick);
// 后续解绑:
FineUI.ui.btn1.off('click', onMyClick);

移除某事件下的全部回调(不传 fn 参数):

FineUI.ui.btn1.off('click');
Parameters:
Name Type Attributes Description
eventNames string

事件名称(可以空格分割多个事件名称)

fn F_Component_on <optional>

之前注册的事件处理函数(留空则移除该事件的所有回调)

on(eventNames, fn)

Description:
  • 注册事件(运行时绑定;与配置参数listeners的初始绑定等价,但可在控件创建后动态追加)

Inherited From:
Examples

初始绑定形态:在FineUI.create时通过listeners配置项一次性声明:

FineUI.create({
    type: 'Button', renderTo: document.body, text: '按钮',
    listeners: {
        click: function (event) {
            FineUI.alert('button clicked');
        },
        // 同一个 listeners 内可以同时声明多个事件
        beforeclick: function (event) {
            // 返回 false 可阻止 click 事件
        }
    }
});

运行时绑定形态:控件创建后通过on()追加,效果与上面的listeners等价:

FineUI.ui.btn1.on('click', function (event) {
    FineUI.alert('button clicked');
});

on()一次绑定多个事件(事件名之间空格分隔):

FineUI.ui.tbxName.on('focus blur', function () {
    console.log('focus 或 blur 触发');
});
Parameters:
Name Type Description
eventNames string

事件名称(可以空格分割多个事件名称)

fn F_Component_on

触发事件时执行的函数

refreshIFrame()

Description:
  • 刷新内联框架

Inherited From:

remove()

Description:
  • 从父控件中移除当前控件并销毁其 DOM(不可恢复;移除后 FineUI.ui[id] 也会清除)。触发 remove 事件可用于清理外部资源。

Inherited From:
Example

动态添加 + 移除子控件:

var btn = FineUI.create({
    type: 'Button', text: '临时按钮', renderTo: document.body
});
// 5 秒后移除
setTimeout(function () {
    btn.remove();
}, 5000);

removeAttr(key)

Description:
  • 删除节点属性

Inherited From:
Parameters:
Name Type Description
key string

节点属性键

removeTooltip()

Description:
  • 删除提示信息

Inherited From:

reset()

Description:
  • 重置容器内的全部字段(将所有字段恢复到初始值;初始值是字段创建时的value,或上次clearDirty后的值)

Inherited From:
Example

"重置"按钮:

FineUI.create({
    type: 'Button', text: '重置',
    handler: function () {
        FineUI.ui.form1.reset();
    }
});

setAttr(key, value)

Description:
  • 设置节点属性

Inherited From:
Parameters:
Name Type Description
key string

节点属性键

value string

节点属性值

setAttrs(attrs)

Description:
  • 设置节点属性

Inherited From:
Parameters:
Name Type Description
attrs Object

节点属性对象

setDisabled(disabled)

Description:
  • 设置控件的禁用状态

Inherited From:
Parameters:
Name Type Description
disabled boolean

是否禁用

setEnabled(enabled)

Description:
  • 设置控件的启用状态

Inherited From:
Parameters:
Name Type Description
enabled boolean

是否启用

setHeight(height)

Description:
  • 设置控件高度

Inherited From:
Parameters:
Name Type Description
height number

高度

setHidden(hidden)

Description:
  • 设置控件的隐藏状态

Inherited From:
Parameters:
Name Type Description
hidden boolean

是否隐藏

setIFrameUrl(url)

Description:
  • 设置内联框架地址

Inherited From:
Parameters:
Name Type Description
url string

内联框架地址

setIcon(icon)

Description:
  • 设置图标地址

Inherited From:
Example
FineUI.ui.panel1.setIcon('../res/images/16/1.png');
Parameters:
Name Type Description
icon string

图标地址

setIconFont(iconFont)

Description:
  • 设置图标字体

Inherited From:
Example
FineUI.ui.panel1.setIconFont('bank');
Parameters:
Name Type Description
iconFont string

图标字体

setSize(width, height)

Description:
  • 设置控件尺寸(同时设置宽高;等价于setWidth + setHeight但只触发一次布局)

Inherited From:
Example

响应窗口 resize 调整面板尺寸:

$(window).on('resize', function () {
    FineUI.ui.panel1.setSize($(window).width() - 20, $(window).height() - 40);
});
Parameters:
Name Type Description
width number

宽度

height number

高度

setSplitDraggable() → {boolean}

Description:
  • 设置分隔条是否可以拖动

Inherited From:
Returns:

是否可以拖动

Type
boolean

setTitle(title)

Description:
  • 设置工具栏标题

Overrides:
Parameters:
Name Type Description
title string

标题文本

setTitleTooltip(tooltip)

Description:
  • 设置面板标题提示信息

Inherited From:
Parameters:
Name Type Description
tooltip string

提示信息字符串

setTooltip(tooltip)

Description:
  • 设置提示信息

Inherited From:
Parameters:
Name Type Description
tooltip string

提示信息

setVisible(visible)

Description:
  • 设置控件的显示状态

Inherited From:
Parameters:
Name Type Description
visible boolean

是否可见

setWidth(width)

Description:
  • 设置控件宽度

Inherited From:
Parameters:
Name Type Description
width number

宽度

show()

Description:
  • 显示控件(与hide对应)

Inherited From:
Example

根据下拉列表的选中项,联动显示某区块:

FineUI.ui.ddlType.on('change', function () {
    if (this.getValue() === 'advanced') {
        FineUI.ui.pnlAdvanced.show();
    } else {
        FineUI.ui.pnlAdvanced.hide();
    }
});

showLoading(opacity, container)

Description:
  • 显示加载动画

Inherited From:
Parameters:
Name Type Description
opacity number

透明度(默认值:0.65)

container jQuery

显示动画的目标元素(留空则为内容元素)

toggleCollapse()

Description:
  • 切换面板的折叠状态

Inherited From:

toggleEnabled()

Description:
  • 切换启用状态

Inherited From:

toggleVisible()

Description:
  • 切换显示状态

Inherited From:

trigger(eventName, args)

Description:
  • 触发事件

Inherited From:
Parameters:
Name Type Description
eventName string

事件名称

args Object

事件参数

Events

beforehide

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

Inherited From:

beforeshow

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

Inherited From:

collapse

Description:
  • 折叠面板时触发(启用collapsible: true时;用户点击折叠图标或调用collapse()都会触发)

Inherited From:
Example

侧栏折叠后让中央面板"伸开"覆盖空间:

FineUI.ui.panelSide.on('collapse', function () {
    FineUI.ui.panelMain.setWidth(window.innerWidth);
});
Parameters:
Name Type Description
event jQuery.Event

事件对象

dirtychange

Description:
  • 容器内的字段值改变时触发

Inherited From:

expand

Description:
  • 展开面板时触发(与collapse事件对应)

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

事件对象

hide

Description:
  • 隐藏控件时触发

Inherited From:

iframeload

Description:
  • 内联框架加载完毕时触发(启用iframe: true时;常用于和 iframe 内部脚本通讯)

Inherited From:
Example

iframe 加载完成后给子页面注入参数:

FineUI.create({
    type: 'Window', iframe: true, iframeUrl: '/detail.aspx',
    listeners: {
        iframeload: function () {
            var iframeWin = this.getIFrameWindow();
            iframeWin.someInitFunction({ userId: 101 });
        }
    }
});

layout

Description:
  • 布局控件时触发

Inherited From:

remove

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

Inherited From:

render

Description:
  • 渲染控件时触发

Inherited From:

resize

Description:
  • 面板尺寸改变时触发

Inherited From:

show

Description:
  • 显示控件时触发

Inherited From:

splitdrag

Description:
  • 拖动分隔条时触发(拖动操作)

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

事件对象