遵循以下守则: http://jsfiddle.net/UsZG8/1/
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.0/themes/base/jquery-ui.css"/>
<script type="text/javascript">
$(document).ready(function() {
$("#modalDiv").dialog({
modal: false,
autoOpen: false,
height: '500',
width: '750',
draggable: true,
resizable: false,
position: 'center',
closeOnEscape: true,
});
$('#1stPage').click(
function() {
url = 'mypage.html';
$("#modalDiv").dialog('option', 'title', 'Test 1st');
$("#modalDiv").dialog("open");
$("#modalIFrame").attr('src',url);
return false;
});
$('#2ndPage').click(
function() {
url = 'myPage2.html';
$("#modalDiv").dialog('option', 'title', 'Test 2nd');
$("#modalDiv").dialog("open");
$("#modalIFrame").attr('src',url);
return false;
});
});
</script>
</head>
<body>
<a id="1stPage" href="#">1st link</a><br><br>
<a id="2ndPage" href="#">2nd link</a>
<div id="modalDiv"><iframe id="modalIFrame" width="100%" height="100%" marginWidth="0" marginHeight="0" frameBorder="0" scrolling="auto" title="Dialog Title"></iframe></div>
</body>
</html>
当点击其中一个链接时,closeOnEscape工作正常。 在点击esc之前单击两个链接时,closeOnEscape将不起作用。
似乎我错过了一些东西,我也无法弄清楚问题出在哪里。 感谢任何帮助:)。
答案 0 :(得分:2)
您必须通过单击“重新聚焦”对话框。当您单击第二个链接时,它会失去焦点
在打开之前发送关闭命令将重新聚焦
$(document).ready(function() {
$("#modalDiv").dialog({
modal: false,
autoOpen: false,
height: '500',
width: '750',
draggable: true,
resizable: false,
position: 'center',
closeOnEscape: true,
});
$('#1stPage').click(
function() {
url = 'mypage.html';
$("#modalDiv").dialog('option', 'title', 'Test 1st');
$("#modalDiv").dialog("close");//<----
$("#modalDiv").dialog("open");
$("#modalIFrame").attr('src',url);
$("#modalDiv").click();
return false;
});
$('#2ndPage').click(
function() {
url = 'myPage2.html';
$("#modalDiv").dialog('option', 'title', 'Test 2nd');
$("#modalDiv").dialog("close");//<----
$("#modalDiv").dialog("open");
$("#modalIFrame").attr('src',url);
return false;
});
});
答案 1 :(得分:2)
我认为这是因为模态对话正在失去焦点。打开对话框后,将焦点设置为它。我认为你的closeOnEscape问题会消失。
$('#1stPage').click(
function() {
url = 'mypage.html';
$("#modalDiv").dialog('option', 'title', 'Test 1st');
$("#modalDiv").dialog("open");
$("#modalIFrame").attr('src',url);
//focus the modal div
return false;
});
$('#2ndPage').click(
function() {
url = 'myPage2.html';
$("#modalDiv").dialog('option', 'title', 'Test 2nd');
$("#modalDiv").dialog("open");
$("#modalIFrame").attr('src',url);
//focus the modal div
return false;
});