我在父页面上有一个链接,它打开一个加载文件的对话框.asp具有超链接的表单和数据库结果集。单击一个超链接(单独的.js文件中的JavaScript函数)时,它会将一些信息更新到父页面并尝试关闭对话框。
我有两个问题 1.从.js
中使用$("#myDiv").dialog("close");
时
function UpdateProdInfo() {
// some code here to update parent and it works
$("#myDiv").dialog("close"); }
使用关闭功能时会出现初始化错误 2.打开第二次对话时出现问题,仍然初始化错误。
请告诉我怎么办?谢谢QF
答案 0 :(得分:1)
问题是,由于default2.asp
作为动态内容加载到现有页面,因此不应包含html
,body
和head
等所有html元素
如果你删除它们,脚本和css包括jquery.js和jqueryui.css和js它可以正常工作
Defaut2.asp应该像
This is Default3.asp file
<br><br>
Something
<a href="Javascript:CloseMe();">Close Me</a>
<br><br>
<form ID=Form2 >
Name: <input type="text" name="Name"><br>
Address: <input type="text" name="address"><br><br>
<input type="submit" value="Submit">
</form>
<script type="text/javascript">
$(function() {
$('#Form2').submit(function(evt) {
evt.preventDefault();
$.ajax({
url: "Default2.asp",
type: 'POST',
data: $(this).serialize(),
success: function(result) {
$('#mydiv').html(result);
}
});
});
var MyDlg = $( "#mydiv" );
$(".ui-widget-overlay").click (function () {
MyDlg.dialog( "close" );
});
});
function CloseMe() {
$( "#mydiv" ).dialog("close");
}
</script>
答案 1 :(得分:0)
尝试拨打
parent.$("#myDiv").dialog("close");
因为您的对话框是在父页面中定义的。
答案 2 :(得分:0)
使用context-parameter:
$("#myDiv",parent.document).dialog("close");
答案 3 :(得分:0)
当您尝试关闭尚未打开的对话框时,会发生初始化错误Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'
。
这可能是
dialog('close')
在打开之前正在解雇,如果您可以看到对话框,则可以排除$('#myDiv')
无法以某种方式获得正确的元素。 我猜它可能是#2。我会尝试调试它......
function UpdateProdInfo() {
// some code here to update parent and it works
console.dir($('#myDiv')); //Does it return the correct element?
//$("#myDiv").dialog("close");
}
...看看它是否正在选择正确的元素。