MessageBox

FineUI. MessageBox

消息框控件。继承自 FineUI.Window,但通常通过快捷方法 FineUI.alert / FineUI.confirm / FineUI.prompt 调用。

相关在线示例

Constructor

new MessageBox(options)

Examples

推荐使用快捷方法FineUI.alert/FineUI.confirm/FineUI.prompt触发对话框(统一传配置对象,回调通过ok/cancel提供):

FineUI.alert('操作成功');  // 单参数:直接传消息字符串

FineUI.alert({
    message: '操作成功', title: '提示', messageIcon: 'success'
});

FineUI.confirm({
    message: '确定要删除此项吗?',
    ok: function () { FineUI.alert('已删除'); },
    cancel: function () { console.log('用户取消'); }
});

FineUI.prompt({
    message: '请输入您的姓名:',
    ok: function (inputValue) {
        FineUI.alert('你输入了:' + inputValue);
    }
});

需要更精细控制时,直接 create 一个 MessageBox 实例(messageType: 'alert' 触发标准弹窗):

FineUI.create({
	type: 'MessageBox', messageType: 'alert', title: '提示', message: '操作成功', messageIcon: 'success'
});

自定义按钮配置,handler根据点击的按钮 id 分发处理:

FineUI.create({
	type: 'MessageBox', title: '确认', message: '请选择操作', messageIcon: 'question',
	buttons: [
		{ buttonId: 'save', text: '保存' },
		{ buttonId: 'discard', text: '丢弃' },
		{ buttonId: 'cancel', text: '取消' }
	],
	handler: function (event, buttonId) {
		FineUI.alert('你点击了:' + buttonId);
	}
});

使用displayMilliseconds实现自动消失的通知(messageType=notify):

FineUI.create({
	type: 'MessageBox', messageType: 'notify', message: '已成功保存', messageIcon: 'success', displayMilliseconds: 3000
});
Parameters:
Name Type Description
options Object

初始参数

Properties
Name Type Default Description
collapsible boolean false

是否可折叠

minWidth number 280

最小宽度

maxWidth number 900

最大宽度

minHeight number

最小高度(默认不限制)

maxHeight number

最小高度(默认不限制)

constrainInitialSize boolean true

限制初始尺寸在当前浏览器窗口内

bodyPadding string | number 10

主体元素的内边距

message string ''

消息内容

messageType string ''

消息类型(可选项为:'', alert, confirm, prompt, notify)(如果为空字符串则需要自定义 buttons)

messageAlign string 'left'

消息的显示位置(可选项为:left, center, right)

messageIcon string 'information'

消息图标(可选项为:information, warning, question, error, success, '')

messageIconFont string ''

消息图标字体

messageIconFontCls string ''

自定义消息图标字体的样式类

showLoading boolean false

是否显示正在加载图标

displayMilliseconds number 0

自动消失之前显示的秒数(0-不消失)

displayProgress boolean true

是否显示倒计时进度条(仅在 displayMilliseconds > 0 时生效;可通过全局 messageBoxDisplayProgress 整体关闭)

buttonFill boolean false

按钮填充整个工具栏

buttonPlain boolean false

简单按钮样式(启用分组按钮,并去除按钮的边框和外边距)

cancelButtonAhead boolean false

取消按钮在确定按钮的前面

type string 'MessageBox'

控件类型

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

active()

Description:
  • 激活窗体(使其位于最上层)

Inherited From:

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:

close(eventopt, closeArgumentopt)

Description:
  • 关闭窗体(可以注册beforeclose事件并返回false来阻止窗体关闭)

Inherited From:
Examples

直接关闭(不传任何参数):

FineUI.ui.window1.close();

在 iframe 子页面提交成功后,把"需要刷新"信号回传给父页面(通过closeArgument):

// 子页面(iframe 内部):
parent.FineUI.ui.window1.close(null, { refresh: true, newId: '101' });

// 父页面注册<code>close</code>事件接收:
FineUI.create({
    type: 'Window', id: 'window1', iframe: true,
    listeners: {
        close: function (event, closeArgument) {
            if (closeArgument && closeArgument.refresh) {
                FineUI.ui.grid1.loadData([]);
            }
        }
    }
});
Parameters:
Name Type Attributes Description
event jQuery.Event <optional>

事件对象(可选)

closeArgument * <optional>

关闭时传递给 close 事件回调的自定义参数(典型用法:iframe 子页面保存后通过此参数把数据回传给父页面)

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

getButton(buttonId) → {FineUI.Button}

Description:
  • 获取消息框底部按钮

Parameters:
Name Type Description
buttonId string

按钮标识符

Returns:

按钮实例

Type
FineUI.Button

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

getPromptValue() → {string}

Description:
  • 获取用户输入的提示值

Returns:

用户输入的提示值

Type
string

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:
  • 隐藏消息框

Overrides:

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

maximize()

Description:
  • 最大化窗体

Inherited From:

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();
    }
});

restore()

Description:
  • 还原窗体

Inherited From:

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

是否禁用

setDraggable() → {boolean}

Description:
  • 设置窗体是否可以拖动

Inherited From:
Returns:

是否可以拖动

Type
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

图标字体

setResizable() → {boolean}

Description:
  • 设置窗体是否可以改变大小

Inherited From:
Returns:

是否可以改变大小

Type
boolean

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:
  • 设置面板标题(运行时更新标题栏文字;Window/Tab/Panel/Grid 等都支持)

Inherited From:
Example

根据当前选中数据动态更新窗体标题:

FineUI.ui.grid1.on('rowclick', function (event, rowId) {
    var row = this.getRowData(rowId);
    FineUI.ui.window1.setTitle('详情:' + row.Name);
    FineUI.ui.window1.show();
});
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:
  • 显示消息框

Overrides:

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

事件参数

triggerNO()

Description:
  • 程序触发"取消"按钮(自动调用消息框的cancel回调并关闭)

triggerYES()

Description:
  • 程序触发"确认"按钮(自动调用消息框的ok回调并关闭;用于测试自动化或者超时自动确认场景)

Example

5 秒后自动确认(场景:默认操作 + 倒计时关闭):

var msgbox = FineUI.create({
    type: 'MessageBox', messageType: 'confirm', message: '5 秒后自动确认',
    handler: function (event, buttonId) {
        if (buttonId === 'ok') {
            console.log('已确认');
        }
    }
});
setTimeout(function () {
    msgbox.triggerYES();
}, 5000);

Events

beforeclose

Description:
  • 关闭窗体之前触发(返回false则阻止关闭窗体)

Inherited From:

beforehide

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

Inherited From:

beforeshow

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

Inherited From:

close

Description:
  • 关闭窗体时触发

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

事件对象

closeArgument * <optional>

调用close(event, closeArgument)时传入的自定义参数

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:

maximize

Description:
  • 最大化窗体时触发

Inherited From:

remove

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

Inherited From:

render

Description:
  • 渲染控件时触发

Inherited From:

resize

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

Inherited From:

restore

Description:
  • 还原窗体时触发

Inherited From:

show

Description:
  • 显示控件时触发

Inherited From:

splitdrag

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

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

事件对象

windowmove

Description:
  • 拖动窗体时触发(拖动过程中持续触发)

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

事件对象

windowresize

Description:
  • 改变窗体大小时触发(拖动操作)

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

事件对象