封装的EasyUI Dialog插件

轻松掌握easyUI:从零开始构建企业级前端界面 本文是easyUI的快速入门指南,旨在帮助开发者从零开始构建企业级前端界面。文章详细介绍了easyUI作为基于jQuery的前端框架,如何通过声明式与编程式两种方式快速搭建包含布局、导航、数据表格和表单的管理后台。内容涵盖环境配置、核心组件实战及性能优化技巧,特别适合需要高效开发内部系统的团队。 阅读详情
封装思路:
弹出:  在调用时向系统主界面或父窗口页面插入一个嵌了iframe的div,然后动态渲染生成EasyUI的Dialog窗口(iframe用于url加载页面)。
关闭:  获取父窗口对象,然后使用EasuUI Dialog的close方法。
返回值:通过向系统主界面或父窗口插入隐藏域hidden来存储窗口返回值,获取返回值时直接使用系统主界面或父窗口对象加上ID得到隐藏域存储的值。
        具体代码见CommonMethod.js文件。
使用方式:
1、界面引用/cmb_adtmgr/common/CommonMethod.js
2、弹出窗口方法:
function openEditWindow(title, url, width, height, callBackFun){
CommonMethod.showDialog(windowId, title, url, width, height, {
showMainPage: true, //是否在系统主界面显示 
draggable:false, //拖动
resizable:false, //改变大小
modal: true, //后台页面可编辑
closed: false, //是否关闭?
minimizable: false,//最小化按钮
maximizable: false,//最大化按钮
closable: true, //关闭按钮
collapsible: false //收缩按钮
}, callBackFun);
}
3、弹出窗口调用:
var url = basePath + "/lossPropertyMatterAction.do?ExeMethod=loadIndexPage&billId="+ billId +"&actCode="+ actCode +"&actInstId="+ actInstId 
        +"&sxlb="+ sxlb +"&wflx="+ wflx +"&childWfCode="+ childWfCode +"&qyname="+ deptName +"&isHistory=N&exeFlag="+ exeFlag;
openEditWindow("呆账核销备案", url, 1024, 700, function(){
       //获取返回值
       if(CommonMethod.getDialogReturnValue(windowId) == "SUSSESS"){
shExecInfoList(); //加载代办事项列表
shControlInfoList(); //加载监控事项列表
       }
});
//设置Dialog对话框的返回值
CommonMethod.setDialogReturnValue(windowId, "SUSSESS"); //注意:windowId要和调用弹出窗口时的一致
//关闭Dialog对话框
CommonMethod.closeDialog(windowId);
//Dialgg对话框关闭事件绑定
CommonMethod.addCloseDialogEvent(windowId, function); //function:方法名
4、效果图:

5、插件源码:
CommonMethod = {
/**
* 弹出对话框
* @param {Object} dialogId:对话框ID
* @param {Object} title:标题
* @param {Object} width:宽度
* @param {Object} height:高度
* @param {Object} options: { 
*   modal:是否模式窗口,
* draggable:是否可拖动,
* resizable:是否可改变大小,
* minimizable:是否显示最小化按钮,
* maximizable:是否显示最大化按钮,
* closable:是否显示关闭按钮,
*   inline:是否内部窗口,
*   toolbar:工具条对象,
* buttons:按钮对象,
* showMainPage:是否在系统主界面显示
* }
* @param {Object} callBackFun:关闭后回调方法
*/
showDialog: function(dialogId, title, url, width, height, options, callBackFun){
var opts = {
id: dialogId,
title: title,
url: url,
width: width,
height: height,
inline: true,
onClose: function(){
opts.baseWin.$("#" + opts.id).dialog("destroy");
if(callBackFun && callBackFun != null && typeof(callBackFun) != "undefined"){
callBackFun.call(this);
}
} 
};
if(options){
for(var key in options){
opts[key] = options[key];
}
}
if(opts.showMainPage && $.trim(opts.showMainPage) == "true"){
opts.baseWin = window.top; //系统主窗口界面
}else{
opts.baseWin = window;
}
var div = opts.baseWin.document.createElement("div");
div.id = opts.id;
if(opts.url){
div.innerHTML = '<iframe scrolling="no" frameborder="0" src="'+ opts.url 
+'" style="width:100%;height:100%;overflow:hidden;border:0px;"></iframe>';
}
opts.baseWin.document.body.appendChild(div);
var baseWinHeight = $(opts.baseWin).height();
var baseWinWidth = $(opts.baseWin).width();
if(opts.height >= baseWinHeight){
opts.height = baseWinHeight - 2;
}
if(opts.width >= baseWinWidth){
opts.width = baseWinWidth - 2;
}
opts.top = ($(opts.baseWin).height() - opts.height) / 2;
opts.left = ($(opts.baseWin).width() - opts.width) / 2;
opts.baseWin.$(div).dialog(opts);

//删除以前的返回值
$(window.top.document.body, window.top.document).find("#returnValue_" + opts.id).remove();
},
/**
* 关闭对话框
* @param {Object} dialogId
*/
closeDialog: function(dialogId){
if(window.frameElement){ //当前窗体所在的iframe
if(window.parent.$("#" + dialogId).parent().hasClass("panel")){ //EasyUI 弹出框
window.parent.$("#" + dialogId).dialog("close");
}else{
if(!window.top.closed){
window.opener.top.opener = null;
window.top.open("", "_self");
window.top.close();
}
}
}else{ //IE 弹出框
if(!window.closed){
window.opener = null;
window.open("", "_self");
window.close();
}
}
},
/**
* 关闭对话框事件处理
* @param dialogId
* @param callBackFun
*/
addCloseDialogEvent: function(dialogId, callBackFun){
if(window.frameElement){ //当前窗体所在的iframe
if(window.parent.$("#" + dialogId).parent().hasClass("panel")){ //EasyUI 弹出框
var closeObj = window.parent.$("#" + dialogId).parent().find("div.panel-tool-close");
closeObj.unbind("click").bind("click", function(){
if(callBackFun && callBackFun != null && typeof(callBackFun) != "undefined"){
callBackFun.call(this);
}
});
}
}
},
/**
* 设置对话框的返回值
* @param {Object} dialogId
* @param {Object} returnValue
*/
setDialogReturnValue: function(dialogId, returnValue){
if(window.frameElement){ //当前窗体所在的iframe
if(window.parent.$("#" + dialogId).parent().hasClass("panel")){ //EasyUI 弹出框
$(window.top.document.body, window.top.document)
.prepend('<input type="hidden" id="returnValue_' + dialogId + '" value=""/>');
$(window.top.document.body, window.top.document).find("#returnValue_" + dialogId).val(returnValue);
}
}else{ //IE 弹出框
window.returnValue = returnValue;
}
},
/**
* 获取对话框的返回值
* @param {Object} dialogId
* @return {TypeName} 
*/
getDialogReturnValue: function(dialogId){
var returnValue =  $.trim($(window.top.document.body, window.top.document).find("#returnValue_" + dialogId).val());
return returnValue;
}
}
EasyUI前端开发框架资源包完整整理 EasyUI 是一个基于 jQuery 的轻量级前端 UI 框架,专注于为 Web 应用提供简洁高效的用户界面组件。它通过封装常见的 UI 控件(如按钮、表格、对话框等),大幅降低了前端开发的复杂度,提升了开发效率。其核心优势在于组件丰富、结构清晰、易于集成,并且具有良好的跨浏览器兼容性。开发者无需从零构建界面,只需通过简单的 HTML 标记与 JavaScript 调用即可快速实现功能完整的页面。 阅读详情

相关推荐

EasyUI核心JS文件详解与前端开发实战

EasyUI 是一款基于 jQuery 的轻量级前端 UI 框架,采用“HTML 标签驱动 + JavaScript 扩展”模式,通过属性实现组件声明式初始化。其核心设计理念是降低前端开发门槛,使开发者无需深入 JavaScript 即可构建复杂交互界面。<div class="easyui-dialog" data-options="title:'用户登录', width:400, height:300"></div>

weixin_42587866的博客 913

EasyUi之Dialog(对话框窗口)

Dialog(对话框窗口)Dialog(对话框窗口)+Window(窗口)+Panel(面板)Dialog属性Dialog事件+方法Window属性,事件,方法Panel属性,事件,方法案列 实现过程 Dialog(对话框窗口)+Window(窗口)+Panel(面板) 今天我们涉及到的内容较多 我们一个一个整理 但我们着重学习的还是Dialog 该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏。对话框窗口右上角只有一个关闭按钮用户可以配置对话框的行为显示其他工具,如collaps

Lzxccas的博客 4515

基于jQuery的EasyUI前端框架实战详解

jQuery EasyUI 遵循“以组件化简化开发”的设计思想,通过 jQuery 插件机制封装高复用性 UI 组件(如datagriddialogtree),实现结构、样式、行为的分离。其无须构建工具即可运行,适用于传统 Web 项目快速搭建。-- 典型组件声明式写法 -->该框架采用基于 HTML5属性的初始化方式,结合 JavaScript 手动调用方法,实现灵活控制。其轻量级特性使其在老旧系统维护、政府或企业内网项目中仍具不可替代性。icon.css。

weixin_42298164的博客 1266

easyUI之dialog控件和form控件的使用

在book.js中增加一列来放操作,在操作列的每一行放入单元格放修改的a标签代码如下:field : ‘操作’,title : ‘操作’,return ‘效果如下:一,dialog(对话框窗口)控件的使用在userManage.jap中添加如下代码为修改添加点击事件:当点击人员信息维护时对话框窗口会自动弹出,因此添加closed属性为true,默认为关闭closed:定义是否可以关闭的窗口同时在book.js中写如下方法,实现当点击修改时弹出对话框窗口。

m0_60666841的博客 1440

jQuery EasyUI 组件库与实战示例完整资源包

表单未保存就点叉?这种情况谁没遇到过!EasyUI 提供了钩子,让你有机会阻止关闭操作:// 假设有 isDirty 插件confirm('表单已修改,确定要关闭吗?')) {// 阻止关闭if (!isValid) {$.messager.alert('提示', '请修正表单错误后再关闭');// 允许关闭这个模式在企业应用中极为常见,体现了典型的“防御性编程”思维。标准 dialog 支持通过buttons数组定义底部操作按钮:buttons: [

weixin_35459464的博客 364

jQuery EasyUI 1.3.6 前端开发框架实战指南

jQuery EasyUI 是一个基于 jQuery 的轻量级前端 UI 框架,采用组件化设计思想,将界面功能封装为可复用的插件(如datagriddialogtree),通过统一的初始化方式挂载到 DOM 元素上。其核心依赖于特定版本的 jQuery(通常要求 1.7+),需确保加载顺序正确以避免$.fn扩展失败。框架支持两种初始化方式:声明式(通过属性)和JavaScript 脚本式,前者便于快速开发,后者更利于动态控制。

weixin_36303305的博客 711

jquery easyUI dialog事件

扩展自$.fn.window.defaults。使用$.fn.dialog.defaults重写默认值对象。 该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏。对话框窗口右上角只有一个关闭按钮用户可以配置对话框的行为显示其他工具,如collapsible,minimizable,maximizable工具等。 默认弹框是对于浏览器窗口剧中的,如果想对于当前

xiaozhu0301的博客 4898

OmniQuant:全方位校准实现大语言模型高效量化与移动端部署

模型量化是一种通过降低模型权重和激活值的数值精度来压缩模型大小、减少内存占用和计算开销的核心技术。其原理在于将高精度浮点数映射到低精度整数表示,从而在保持模型性能的同时,显著提升存储和计算效率。这项技术的价值在于,它使得大规模语言模型能够在消费级硬件和资源受限的移动设备上运行,极大地拓宽了AI应用场景。OmniQuant作为一项前沿的量化技术,通过引入可学习权重裁剪和可学习等价变换机制,实现了对权重分布不均匀和激活值异常值问题的协同优化,从而在极低的比特数下仍能保持优异的模型性能。本文深入探讨了OmniQu

weixin_30719711的博客 480

jQuery-EasyUI学习(十四)Dialog(对话框窗口)

一、Dialog(对话框窗口)           该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏。对话框窗口右上角只有一个关闭按钮用户可以配置对话框的行为显示其他工具,如collapsible,minimizable,maximizable工具等。 二、例子 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Trans...

quge_name_harder的博客 736

团子杂记:SAP收入确认工具RAR(Revenue Recognition&Reporting)在新收入准则下的应用

SAP收入确认工具RAR知识分享

Lucas1211的博客 4267

在统信UOS Server 20上踩坑记:手把手教你搞定openGauss 5.0.0企业版安装(附常见报错解决方案)

本文详细记录了在统信UOS Server 20上安装openGauss 5.0企业版的实战经验,包括环境准备、依赖库问题、目录权限、内存参数调优等常见问题的解决方案。通过伪装系统标识、建立软链接、调整内存参数等方法,成功克服国产操作系统与企业级数据库的兼容性挑战,为开发者提供了一份深度排雷指南。

weixin_28698059的博客 257

easyUI框架之Dialog、Layout、DateBox、Pagination

二、引入使用easyUI引入js文件的顺序不要搞反了,有的童鞋经常会发现我引入了js文件为什么会报一些莫名奇妙的问题,最多的应该就是未定义undefined,其实大多时候都是js文件引入顺序的问题。我们知道网页在加载我们的index页面的时候,会从上往下以此加载,那么有一些js文件依赖jquery文件,顺序搞错了的话,将会先加载其他的js,最后再加载jquery,这就导致出现上述未定义的问题,所以要注意引入的顺序

哈哈 845

YOLO11涨点优化:知识蒸馏 | 引入FGD(Focal and Global Distillation)蒸馏,让轻量学生模型汲取大模型全局感知力

文章摘要 目标检测模型YOLO11在轻量化部署中存在"全局盲区"问题,即轻量模型感受野不足导致大尺度场景下性能下降。知识蒸馏技术FGD(Focal and Global Distillation)通过双分支机制有效解决这一问题:Focal Distillation分离前景背景特征,让学生模型聚焦关键区域;Global Distillation传递像素间关系信息,弥补全局感知缺陷。实验表明,FGD可使YOLO11轻量版mAP提升2.5%以上,且不增加推理耗时。本文详细解析了FGD原理,并给出YOLO11上的实

2601_95807009的博客 225

在次封装easyui-Dialog 插件

$.fn.hDialog=function(options){vardefaults={width:300,height:200,title:'此处标题',html:'',iconCls:'',submit:f...

weixin_30776863的博客 128

芒果YOLOv8改进52:主干Backbone篇之GhostNetV2:提出原创GhostNetV2 架构升级版:引入长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干,打造高效轻量级检测器

长距离注意力机制增强廉价操作,打造轻量级检测器

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1596

GPU 运维实战:H100/H800/B300 换卡与压测

(烧多久、看什么、什么算合格)。文末还给了一个能直接跑的验收判定脚本,三个真实场景的裁决输出都在。

老韩的Linux云计算架构师进阶之路 254

(js) 封装dialog模态框插件

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> <!-- IMPORT CSS

weixin_42069147的博客 758

【Android 11】使用Android Studio调试系统应用之Settings移植(三):构建Settings、SettingsLib项目文件

基于android 11,本系列文章力争实用,讲解使用AS调试系统app的方法,并提供了配套源下载,供学习调试。上一篇文章[Android 11]使用Android Studio调试系统应用(二):依赖分析、android.bp、静态和动态依赖,讲解了如何搭建编译服务器,如何下载AOSP源码,如何切换到AOSP的指定分支(android-11-r39),以及如何编译、解决编译错误、运行模拟器,本文将开始讲解如何构建Settings的AS工程文件! 走过、路过,有用过的同学,记得给个赞O(∩_∩)O哈!

上周的博客 2667

easyui的window插件再次封装

easyui的window插件再次封装 说明:该插件弹出的弹出框在最顶层的页面中,而不是在当前页面所在的iframe中,它的可拖动范围是整个浏览器窗口;所以不能用JS的parent对象获取弹出它的父页面,这里用了一个笨方法,最多支持四级弹出框,即弹出框中再弹出弹出框的情况,笨方法也是方法,它很简单、很有效。 代码: /** * easyui的window插件再次封装 * 2014...

weixin_34253539的博客 176

EtherCAT主站教程3--适配伺服驱动器(模式配置)

目前通用的伺服驱动器的位置模式、速度模式以及其他模式是伺服系统中常见的控制模式,切换这些模式通常需要根据具体的伺服驱动器型号和控制协议(如EtherCAT、CANopen、Modbus等)进行配置。以下是这些模式的概述及切换方法的一般性指导:协议规范中,一共有以下几种模式:其中模式1、3、6对于比较常用,也更容易上手。

weixin_52626887的博客 792

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Easyui

一.什么是Easyui EasyUI全称是Jquery-EasyUI,它是基于Jquery的一个UI插件库,封装了许多实用的控件和功能,并且是完美支持 二.Easyui的特点: jQuery EasyUlQ为提供了大多数UI控件的使用,如:accordion, combobox, menu,dialog,tabs, validatebox, datagrid,window, tree等 等。 三.引用css和js文件 <link rel="stylesheet" type="text/

wanry520的博客 699

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jquery easyui dialog 第二次加载不初始化_史上最全的web前端面试题汇总及答案JQuery(四)...

作者:樱桃小丸子儿链接:https://www.jianshu.com/p/2f7eb1ad71741、你使用过jQuery吗?如果有,你为什么要使用jQuery呢?①用过。②如果使用原生javascript开发的话,会面临很多问题,如浏览器兼容、Ajax数据解析、Dom、事件注册操作等都非常烦锁,而jQuery正好解决了这些问题。③当然jQuery还有非常有用的其它特性,如为dom对象绑定数据、...

weixin_29886825的博客 306

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

easyui tabs 的href和content属性

众所周知,jQuery Easyui 的tabs插件有两种方式加载某个tab(标签页)上的内容:“href远程请求”和“content本地内容”,本文就两种方式的优缺点进行简单分析和思考。 两者特点: href方式加载数据的特点: 被加载的页面只有body元素内部的内容才会被加载,也就是jQuery的ajax请求的只是html片段。加载远程url时有遮罩效果,也就是“等待中……”效果,

q791483317的专栏 8508

EasyUI的使用顺便推荐两款比较好看的弹框与加载样式

EasyUI是什么? EasyUI全称是Jquery-EasyUI,它是基于Jquery的一个UI插件库,封装了许多实用的控件和功能,并且是完美支持HTML5网页的框架。提供的控件包括数据表格,树形表格,菜单,进度条,选项卡,日期组合框,调节器,对话框等等。 EasyUI的目标就是帮助Web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的JavaScript,也不要对CSS样式有深入的了解,开发者只需要了解一些简单的Html标签(table标签、form标签、div标签等)即可。

qq_62898618的博客 1014

easyui数据请求两个url_easyUi内嵌iframe时,弹出对话框被遮挡问题

这是多年以前用传统JQuery(easyUi)做项目时遇到的问题,今天把解决思路发布出来,也许能帮助到还在使用老架构的同学。在开发类ERP的后台管理系统时,经常会看到这样的布局结构每打开一个菜单都是单独打开一个Tab页,easyUi打开Tab页有两种方式:动态增加iframe在同一个Dom树中增加div 的方式同一Dom树中存在命名污染的问题,包括样式也会互相影响,新增加页面里的样式很可能影响原有...

weixin_39655160的博客 313

浅谈 easyui tabs 的href和content属性

上篇 下篇 浅谈 easyui tabs 的href和content属性 2012年02月17日 ⁄ tabs ⁄ 共 3211字 ⁄ 评论数 50 ⁄ 被围观 96,953 views+ ...

yijianzhi77的博客 342
上一篇: 屏蔽IE页面form表单控件的Backspace键
下一篇: Js去除数组中的重复项插件
清风微拂尘
博客等级 码龄15年 16粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值