/** * @requires jquery, EasyUI 1.2.6+ * * 此方法是对 EasyUI.window 和 EasyUI.dialog 的扩展 * 可以实现如下功能: * 1、使用框架页面时可以控制窗口是否跨框架弹出在框架最顶层页面,还是框架内当前页面。默认框架最顶层页面 * 2、可以控制url加载页面方式,是使用默认方式,还是iframe加载, 默认iframe加载 * 3、使用iframe加载页面时,可以实现父页面向子页面传递javaScript对象 * 4、使用iframe加载页面时,可以订制iframe onLoad事件 * 5、扩展content属性,自动识别是静态文本内容,还是加载页面 * 6、通过赋值ID属性,控制弹出窗体唯一性 * 7、toolbar、buttons中定义按钮的handler属性,支持弹出窗体iframe中方法调用。 * 8、弹出窗体关闭方式更灵活 * * * @author zhaojh<zjh527@163.com> * @date 2012.11.15 * */ (function($){ $.namespace('windows'); /** * 普通窗体 * * 新增属性说明如下 * @param isFrame 是否开启使用iframe加载给定url页面, 此属性设置为true时则开启使用iframe加载页面。 值:true|false, 默认值true * @param self 用于框架页面,如果值为true则不跨框架,否则跨框架弹出在框架最顶层页面。 值:true|false, 默认值false * @param data 用于在使用iframe加载给定页面时,父页面给子页面传递数据。 默认值null * * 扩展属性说明如下 * @param onLoad 当使用iframe加载给定url页面时,在iframe加载完成后调用。 * 默认接收一个参数对象,参数对象属性说明参见下面toolbar、buttons说明第2项。 * @param content 可根据内容前缀关键字'url:',来判断是显示静态文本还是加载页面。 * @param id 此属性用来标识弹出窗体的唯一性,不再用来充当panel的id属性 * * 特殊属性说明如下 * this.content iframe方式加载内容页的window对象。 用于onLoad方法中的调用 * * * toolbar、buttons 属性定义按钮handler属性扩展说明如下 * 1、当handler 被赋值字符串时,表示调用弹出窗体iframe中已有的与字符串值同名的方法 * 2、被调用方法默认接收一个参数对象,对象属性如下: * data: 类型:Object,是对windows.open方法参数data的引用 * close: 类型:Function,用来关闭弹出窗体 * * * * * 注:其他属性请参考EasyUI API文档。 * */ windows.open = function(opts){ var win; var defaults = { width: 500, height: 400, modal: true, // 定义是否将窗体显示为模式化窗口 draggable:false, // 定义是否能够拖拽窗口 collapsible:false, // 定义是否显示可折叠按钮 maximizable:false, // 定义是否显示最大化按钮 minimizable: false, // 定义是否显示最小化按钮 resizable: false, // 定义是否能够改变窗口大小 isFrame: true, //是否使用iframe self: false, //用于框架页面,如果值为true则不跨框架,否则跨框架弹出在框架最顶层页面 content: '', // 请求内容,可以是一个网页地址,也可以是html内容 onLoad: null, onDestroyWin:null, onClose: function(){ onAction(); win.dialog('destroy'); } }; var options = $.extend({}, defaults, opts); //取顶层页面 var _doc, _top = (function(w){ try{ _doc = w['top'].document; _doc.getElementsByTagName; }catch(e){ _doc = w.document; return w; } if(options.self || _doc.getElementsByTagName('frameset').length >0){ _doc = w.document; return w; } return w['top']; })(window); //如填写ID属性,则窗体唯一 var winId; if(options.id){ winId = options.id; delete options.id; //检查创建窗口是否已经存在,存在则不在创建 if($('#'+winId).length>0){ return; } } //检查content内容是静态文本,还是url地址 var isUrl = /^url:/.test(options.content); if(isUrl){ var url = options.content.substr(4, options.content.length); //构建iframe加载方式 if(options.isFrame){ var iframe = $('<iframe></iframe>') .attr('height', '100%') .attr('width', '100%') .attr('marginheight', '0') .attr('marginwidth', '0') .attr('frameborder','0').attr('src', url); var onAction = function(){ var action = ""; try{ var resData = _this.content.GetData(); if(isEmptyObject(resData)){ // 为空则取消 action = "cencal"; } else { action = "ok"; } options.onDestroyWin.call(_this, action); } catch(e) { var ermsg = e.message.indexOf("GetData") != -1 ? "子窗口没有定义GetData脚本函数,请定义!" : e; $.messager.alert("错误提示", ermsg, "error"); } } var _this = this; var frameOnLoad = function(){ _this.content = iframe.get(0).contentWindow; options.onLoad && options.onLoad.call(_this,{ close: function() { win.dialog('close'); } }); } delete options.content; }else{//使用默认页面加载方式 options.href = url; } } //加工toolbar和buttons中定义的handler方法,使其可以接收给定参数,用于iframe方式下的父子页面传值和窗口关闭 /*var warpHandler = function(handler){ var args = {data: options.data, close: function(){win.dialog('close')}}; if(typeof handler =='function'){ return function(){ handler(args); } } if(typeof handler == 'string' && options.isFrame){ return function(){ iframe.get(0).contentWindow[handler](args); } } } //处理toolbar数组事件定义,选择器形式不做处理 if(options.toolbar && $.isArray(options.toolbar)){ for(var i in options.toolbar){ options.toolbar[i].handler = warpHandler(options.toolbar[i].handler); } } //处理buttons数组事件定义,选择器形式不做处理 if(options.buttons && $.isArray(options.buttons)){ for(var i in options.buttons){ options.buttons[i].handler = warpHandler(options.buttons[i].handler); } }*/ if(options.isFrame && iframe){ iframe.bind('load', frameOnLoad); try { win = _top.$('<div>', {id: winId}).append(iframe).dialog(options); } catch (e){ win = $('<div>', {id: winId}).append(iframe).appendTo("body").dialog(options); } }else{ win = _top.$('<div>', {id: winId}).dialog(options); } } windows.getIFrameEl = function(){ return this; } /** * 模式窗体 * 参数说明请看windows.open */ windows.showModalDialog = function(opts){ var defaults = $.extend( {}, opts, { modal: true, minimizable: false, maximizable: false, resizable: false, collapsible: false } ); windows.open(defaults); } })(jQuery)
(function($){ $.extend({ namespace: function(ns){ if(typeof ns != 'string'){ throw new Error('namespace must be a string'); } var ns_arr = ns.split('.'); var parent = window; for(var i in ns_arr){ parent[ns_arr[i]] = parent[ns_arr[i]] || {}; parent = parent[ns_arr[i]]; } } }); })(jQuery)
相关推荐
**jQuery Dialog 控件详解** jQuery Dialog 是 jQuery UI 库中的一个核心组件,它提供了一种在网页上创建可自定义的对话框(弹窗)的方法。这个控件用于展示信息、提示用户输入或者进行交互操作,是网页界面设计中...
1. **对话框(Dialog)**: 可以创建模态或非模态对话框,提供关闭按钮、拖动和缩放等功能。 2. **可排序(Sortable)**: 让列表项可以拖放排序,常用于表格或列表。 3. **可拖放(Draggable)**: 将元素转化为可...
### Jquery UI 的 Dialog 使用详解 #### 概述 Jquery UI 的 `Dialog` 是一个非常实用且功能丰富的用户界面组件,它可以帮助开发者快速创建一个浮动的窗口,该窗口包括标题和内容两个主要部分。此外,`Dialog` 组件...
jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它简化了网页用户界面的创建,提供了丰富的组件和主题,如对话框、表格、菜单、按钮、树形控件等。这个名为 "jc.rar" 的压缩包文件显然包含了关于 jQuery EasyUI ...
《jQuery_LigerUI_V1.2.2:深入解析与实战指南》 jQuery_LigerUI 是一个基于 jQuery 的前端UI库,专为构建用户界面而设计。版本V1.2.2代表了该库的一个稳定版本,包含了丰富的功能和优化。在本篇文章中,我们将深入...
EasyUI提供了多种表单控件,如文本框、下拉框、复选框等,以及表单验证机制。在示例中,你可以看到如何创建动态表单,以及如何处理表单提交和验证事件。 菜单(Menu)是导航系统的关键组件,它可以为用户提供清晰的...
- **Dialog(对话框)**:允许在网页上创建弹出式窗口,常用于警告、确认或提供详细信息。 - **DatePicker(日期选择器)**:为输入字段添加了一个方便的下拉日历,用户可以轻松地选择日期。 - **Draggable and ...
jQuery 插件 dialog 是一个广泛使用的弹出窗口控件,它极大地丰富了网页交互体验,提供了灵活、可定制的对话框功能。这个插件基于 jQuery UI 库,它继承了 jQuery 的简洁API,并且增加了丰富的界面元素和交互设计。...
**jQuery Dialog弹出层对话框插件:深入解析与应用** jQuery Dialog是jQuery UI库中的一个组件,它提供了一种优雅的方式在网页上创建交互式的弹出层对话框。这个插件不仅允许用户展示信息,还可以加载外部URL内容,...
jQuery UI 包含了一系列的可定制的、易于使用的控件,如日期选择器、滑块、对话框等,大大简化了前端开发工作。 **jQuery UI 控件** 1. **日期选择器(Datepicker)**:jQuery UI 提供了一个强大的日期选择器插件...
例如,通过`$("#dialog").dialog()`,我们可以轻松创建一个可交互的对话框。jQuery UI的拖放功能也是其一大亮点,允许用户自由移动页面上的元素,提升用户体验。 最后,jQuery Mobile 1.4.5是专为移动设备设计的...
- **树形控件(tree)**:展示层级关系的数据。 - **下拉选择器(combobox)**:提供下拉列表供用户选择。 - **滑块(slider)**:用于数值选择或进度条显示。 **3. 使用步骤:** - 引入库文件:添加jQuery和...
1. **对话框(Dialog)**:用于显示独立的窗口,可以用来展示信息、确认操作或进行多步骤流程。在示例中,你可能会看到如何创建、打开和关闭对话框,以及如何设置其大小、位置和可拖动/可缩放属性。 2. **表格(Table)...
- **其他组件**:还包括对话框(Dialog)、进度条(ProgressBar)、树(Tree)、面板(Panel)等,丰富了页面功能。 3. **主题和定制**:EasyUI 自带多种预设主题,同时也支持自定义样式,以满足个性化需求。 4. ...
1. **对话框(Dialog)**:EasyUI提供了弹出式对话框,可以用来显示信息、获取用户输入或进行其他交互。通过简单的配置,可以实现模态和非模态对话框,以及自定义大小和位置。 2. **表格(Grid)**:表格组件支持数据...
- 表单(form):提供了一套完整的表单控件,如文本框、下拉框、日期选择器等,以及表单验证机制。 - 对话框(dialog):用于展示弹出式窗口,常用于用户确认、信息提示或表单编辑。 - 菜单(menu):创建可折叠...
6. **Dialog(对话框)**:类似Window,但通常用于临时显示信息或进行确认操作。 7. **Form(表单)**:提供表单控件,如文本框、下拉框、复选框等,支持数据验证和提交。 8. **DataGrid(数据网格)**:用于展示...
EasyUI 提供了丰富的表单控件,如文本框、复选框、单选按钮、下拉选择框等,并支持表单验证。例如: ```html [5,10]" label="用户名"> 密码"> ``` ### 3. 事件处理和API jQuery EasyUI 提供了丰富的...
- **Tree(树形控件)**:加载、操作树结构数据,处理节点的展开、收缩、选择等事件。 - **Accordion(折叠面板)**:组织内容,允许用户逐步查看或隐藏信息。 - **Slider(滑块)**:创建滑动选择器,设置范围,...
jQuery EasyUI是一个基于jQuery的UI框架,它提供了一系列的用户界面组件,如DataGrid、TreeGrid、Dialog等,简化了Web前端的开发工作。其中,DataGrid组件是一种用于展示和操作表格数据的控件,支持排序、分页、筛选...