弹出层是一个iframe

openWindow:function (options)
{
var url = options.url;
url += url.indexOf("?") > 0 ? "&" : "?";
url += "ran=" + Math.random();
var isScroll = options.isScroll ? 'yes' : 'no';
rcpnDetail.mainWindow = $("<div></div>");
rcpnDetail.mainWindow.html('<iframe frameborder="0" width="100%" scrolling="' + isScroll + '" height="' + options.height + '" src="' + url + '"></iframe>')
.dialog(
{
width: options.width,
title: options.title,
name: options.name,
isDraggable: true,
afterClose: options.afterClose
});
}

调用自定义jquery.dialog.js

(function($) {
$.fn.dialog = function(options) {
if (this.length == ) return null;
var method = typeof arguments[] == "string" && arguments[];
var args = method && Array.prototype.slice.call(arguments, ) || arguments;
return this.each(function() {
var context = $(this).data("dialog");
if (!context) {
context = new $.dialog(this, options);
$(this).data('dialog', context);
}
if (method) context[method].apply(context, args);
else context.show();
});
}; $.dialog = function(control, options) {
var context = this;
var options = $.extend({}, $.fn.dialog.defaults, options);
options.isCreateId = options.isCreateId ? options.isCreateId : 'dialog-' + $.dialog.__count; // 唯一ID
var overlayId = options.isCreateId + '-overlay'; // 遮罩层ID
var isShow = false;
var isIe = $.browser.msie;
this.isDynamic = $(control).parent().length == ;
var returnValue = null; //关闭窗体返回值
var barHtml = !options.isShowTitle ? '' : [
'<div class="bar">',
'<span class="title">' + options.title + '</span>',
'<a class="close"><i class="fa fa-times"></i>' + options.closeText + '</a>',
'<div class="clear"></div>',
'</div>'
].join(''); var content = $('<div class="content"></div>').append($(control).show());
var dialog = $('<div id="' + options.isCreateId + '" name="' + (options.name ? options.name : options.isCreateId) + '" class="dialog" style="display:none"></div>').css('width', options.width).append(barHtml).append(content);
$('body').append(dialog); var resetPos = function() {
if (options.isCenter) {
var left = ($(window).width() - dialog.width()) / ;
var top = ($(window).height() - dialog.height()) / ;
if (top < ) {
top = ;
}
dialog.css({ top: top + $(document).scrollTop(), left: left + $(document).scrollLeft() });
} if (options.isNearTrigger) {
var postion = { t: , l: , w: , h: };
if (options.triggerElement) {
var offsetElement = $(options.triggerElement).offset();
postion = {
t: offsetElement.top,
l: offsetElement.left,
w: $(options.triggerElement).outerWidth(),
h: $(options.triggerElement).outerHeight()
};
} if ($.isFunction(options.triggerPosition)) {
options.triggerPosition.call(context, dialog, postion);
} else {
dialog.css({ left: postion.l + postion.w, top: postion.t });
}
}
} var init = function() {
/* 是否需要初始化背景遮罩层 */
if (options.isModal) {
$('body').append('<div id="' + overlayId + '" class="dialog-overlay"></div>');
$('#' + overlayId).css({
'left': ,
'top': ,
'width': '100%',
'height': $(document).height(),
'z-index': ++$.dialog.__zindex,
'position': 'absolute'
}).hide();
} dialog.css({
'z-index': ++$.dialog.__zindex,
'position': options.isFixed ? 'fixed' : 'absolute'
}); /* 以下代码处理框体是否可以移动 */
var mouse = { x: , y: }; function moveDialog(event) {
var e = window.event || event;
var top = parseInt(dialog.css('top')) + (e.clientY - mouse.y);
var left = parseInt(dialog.css('left')) + (e.clientX - mouse.x);
dialog.css({ top: top, left: left });
mouse.x = e.clientX;
mouse.y = e.clientY;
}; dialog.find('.bar').mousedown(function(event) {
if (!options.isDraggable) {
return; }
var e = window.event || event;
mouse.x = e.clientX;
mouse.y = e.clientY;
$(document).bind('mousemove', moveDialog);
}); $(document).mouseup(function(event) {
$(document).unbind('mousemove', moveDialog);
}); /* 绑定一些相关事件。 */
dialog.find('.close').bind('click', function() {
if (!isShow) return;
if (context.isDynamic) context.close();
else context.hide();
});
dialog.bind('mousedown', function() {
dialog.css('z-index', ++$.dialog.__zindex);
});
/* 修改项,添加keycode冒泡判断 2014-09-10 */
if (!$.dialog.__keydown) {
window.listenKeyDownBubble = true;
$(document).keydown(function(event, data) {
// 替换keyCode
if (data && data.keyCode) {
event.keyCode = data.keyCode;
}
if (event.keyCode == ) {
var elements = $(".dialog:visible");
if (elements.length == ) return false;
elements = elements.sort(function(l, r) {
if (parseInt($(l).css("z-index")) < parseInt($(r).css("z-index"))) return ;
else return -;
});
var current = $(elements[])
.find("> .content > :first-child")
.data("dialog");
if (current.isDynamic) current.close();
else current.hide();
return false;
}
});
$.dialog.__keydown = true;
}
} this.show = function() {
if ($.isFunction(options.beforeShow)) {
if (!options.beforeShow.call(context, options)) {
return;
}
} var getOpacity = function(id) {
if (!isIe) {
return $('#' + id).css('opacity');
} var el = document.getElementById(id);
return (undefined != el
&& undefined != el.filters
&& undefined != el.filters.alpha
&& undefined != el.filters.alpha.opacity)
? el.filters.alpha.opacity / : 0.5;
}
/* 是否显示背景遮罩层 */
if (options.isModal) {
$('#' + overlayId).fadeTo('fast', getOpacity(overlayId));
} dialog.fadeIn('fast', function() {
if ($.isFunction(options.afterShow)) {
options.afterShow.call(context, options);
}
var d = $(this).find('iframe');
if (d.length==) {
$(this).focus();
} else {
d.one("load", function() {
this.contentWindow.focus();
});
} returnValue = null; //清空
isShow = true;
}); resetPos();
} this.close = function() {
if ($.isFunction(options.beforeClose)) {
if (!options.beforeClose.call(context, options)) {
return;
}
} dialog.fadeOut('fast', function() {
$(this).remove();
isShow = false;
if ($.isFunction(options.afterClose)) {
options.afterClose.call(context, options);
}
returnValue = null; //清空
}); if (options.isModal) {
$('#' + overlayId).fadeOut('fast', function() { $(this).remove(); });
} delete context;
} this.hide = function() {
if (!isShow) {
return;
} if ($.isFunction(options.beforeHide)) {
if (!options.beforeHide.call(context, options)) {
return;
}
} dialog.fadeOut('fast', function() {
if ($.isFunction(options.afterHide)) {
options.afterHide.call(context, options);
}
}); if (options.isModal) {
$('#' + overlayId).fadeOut('fast');
} isShow = false;
} //设置窗体返回值
this.setReturnValue = function(value) {
returnValue = value;
} //获取窗体放回值
this.getReturnValue = function() {
return returnValue;
} init.call(this); $.dialog.__zindex++;
$.dialog.__count++;
} $.dialog.__zindex = ;
$.dialog.__count = ;
$.dialog.__keydown = false; $.fn.dialog.defaults = {
width: "auto", // 默认值。
name: "", // dialog名称
title: '标题', // 标题文本,若不想显示title请通过CSS设置其display为none
isShowTitle: true, // 是否显示标题栏。
closeText: ' ', // 关闭按钮文字,若不想显示关闭按钮请通过CSS设置其display为none
isDraggable: false, // 是否移动
isModal: true, // 是否是模态对话框
isCenter: true, // 是否居中。
isFixed: false, // 是否跟随页面滚动。
isCreateId: false, // 对话框的id,若为false,则由系统自动产生一个唯一id。
isNearTrigger: false, // 是否跟随触发对象
triggerElement: null, // 触发对象 id or element
triggerPosition: null, // 调节弹窗位置事件
beforeShow: null, // 显示前触发事件
afterShow: null, // 显示后触发事件
beforeClose: null, // 关闭前触发事件
afterClose: null, // 关闭后触发事件
beforeHide: null, // 隐藏前触发事件
afterHide: null // 隐藏后触发事件
}; })(jQuery);
$.getDialogByChildWindow= function(dialogName) {
return parent.$(".dialog[name='" + dialogName + "'] > .content > :first-child ");
}

在页面点击click

$("#btnBillProcess").click(function () {
rcpnDetail.openWindow({
width: '970px',
name: "BillDeal",
height: '600px',
title: '账务处理',
url: '@Url.Action("BillDeal", "Cashier")?@UrlParams.PNAME_MULTY_BILLS=@Model.BillID&viewHis=@ViewBag.tableType'
});
});

弹出层打开自动获取焦点

var d = $(this).find('iframe');
if (d.length==0) {
$(this).focus(); } else {
d.one("load", function() {
this.contentWindow.focus();
});
}

dialog获取焦点的更多相关文章

  1. 3java面试题 传智 发的 有用

    第一章内容介绍 20 第二章JavaSE基础 21 一.Java面向对象 21 1. 面向对象都有哪些特性以及你对这些特性的理解 21 2. 访问权限修饰符public.private.protect ...

  2. jquery ui dialog autofocus 去掉默认第一个元素获取焦点

    经常在dialog窗口中第一个元素为日期控件时,打开窗口则会自动显示日期下拉框. 解决办法:在dialog的open事件中,设置父对象获得焦点. p1_dialog_seniorSearch.dial ...

  3. Jquery UI - DatePicker 在Dialog中无法自动隐藏的解决思路

    通过Jquery UI Dialog模态展示如下的一个员工编辑页面,但是遇到一个奇怪的问题:点击Start Date的input元素后,其无法失去焦点.从而导致DatePicker控件在选择日期后无法 ...

  4. android学习日记03--常用控件Dialog

    常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...

  5. AlertDialog中EditText不能获取焦点以及不宽度不能自动铺满的完美解决方案

    问题分析: 因为 dialog的Attributes使用的默认的,其中一个属性就是:flags ,就是这个属性导致不能获取焦点,默认的是FLAG_NOT_FOCUSABLE,故名思义不能获取输入焦点, ...

  6. Android EditText setOnClickListener事件 只有获取焦点才能响应 采用setOnTouchListener解决

    最近在学习Android开发,在编写程序的过程中,发现EditText setOnClickListener事件响应中,只有获取焦点的时候才会响应, 如当焦点在别的控件上时,只能先点击获取焦点,第二次 ...

  7. dialog提交表单

    <div id="dialog" title="添加客户"> <!--表单提交--> <form id="dialogF ...

  8. Android自己定义dialog中的EditText无法弹出键盘的解决

    近期我独立开发的项目<全医会>已经在内測其中了.非常快将会上架到各大应用市场.之前开发的几个项目都由于一些原因没有上架还是比較遗憾的.所以,近期我心情格外的好. 今天在做一个新项目,专为律 ...

  9. JQ UI dialog

    初始化参数 对于 dialog 来说,首先需要进行初始化,在调用 dialog 函数的时候,如果没有传递参数,或者传递了一个对象,那么就表示在初始化一个对话框. 没有参数,表示按照默认的设置初始化对话 ...

随机推荐

  1. mvc 笔记

    @{ ViewBag.Title = "主页"; } <div> 这里就是渲染Body啦.~~不需要写神马<asp:Content />,其实因为Rende ...

  2. Python 初学

    一. 前言 不怕各位园友笑话,今年年初时,我才知道有一个叫python的编程语言,听说它很大强大,而我只会用c#,正想好好再学一门新语言,还有人分享自己的经验时说,使用python制作的脚本,再做持续 ...

  3. 百度地图坐标转换API和地图API

    利用百度地图的服务将经纬度转换为米单位坐标 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  4. 自动化高效css开发,畅谈less的灵活变化

    css是一种让html与样式分离解析而出现的代码,它的出现大大提高了程序员的工作效率,和后期进行维护的效率.但是发展至今,由于起死板单调的写法,越来越不能满足程序员们灵活的思维,很多时候是种恨铁不成钢 ...

  5. 如何看linux是32位还是64位

    查看linux是多少位的几位方法: 查看linux机器是32位还是64位的方法: 方法一: file  /sbin/init 或者 file  /bin/ls 结果如下:/sbin/init: ELF ...

  6. jquery ajax 跨域提交(附IE浏览器解决方案)

    后台输出内容之前需要指定header("Access-Control-Allow-Origin: *"); post 之前 jQuery.support.cors = true; ...

  7. 高性能WEB开发 为什么要减少请求数,如何减少请求数!

    http请求头的数据量 [声明] 转载  原文出处:http://www.blogjava.net/BearRui/. 谢谢我们先分析下请求头,看看每次请求都带了那些额外的数据.下面是监控的googl ...

  8. 如何实现Linux下的U盘(USB Mass Storage)驱动

    如何实现Linux下的U盘(USB Mass Storage)驱动 版本:v0.7 How to Write Linux USB MSC (Mass Storage Class) Driver Cri ...

  9. 键盘有没有NKRO ?微软帮你测

    玩家甚至媒体的解读是错的,所以小编在此重点说明一些概念.并分享如何测试.在许多游戏与软体中都会使用组合键功能,也就是同时按下特定几个按键之后就能触发特别的功能,简单的说就是一些动作的快捷键.不过,有时 ...

  10. 深入研究 Win32 结构化异常处理(作者博客有许多SEH的研究文章)

    摘要 就像人们常说的那样,Win32 结构化异常处理(SEH)是一个操作系统提供的服务.你能找到的所有关于 SEH 的文档讲的都是针对某个特定编译器的.建立在操作系统层之上的封装库.我将从 SEH 的 ...