有了这个div:
<div id="advSearchDialog" style="visibility:hidden;">
<xx:search ID="searchUC" runat="server" />
</div>
还有一个按钮:
<input type="button" id="btnAdvSearch" value="Search" />
我把它变成了一个jQuery对话框,按钮打开了对话框:
$(document).ready(function() {
$('#advSearchDialog').dialog({
autoOpen: false,
height: 500,
width: 600,
modal: true,
bgiframe: true,
title: 'Avanceret søgning',
open: function(type, data) {
$(this).parent().appendTo("form");
}
});
$('#btnAdvSearch').click(function() {
$('#advSearchDialog').css('visibility', 'visible');
$('#advSearchDialog').dialog('open');
});
});
使用ASP.NET,我遇到了问题。
如果我按下ASP.NET页面上的其他按钮(在更新面板内),然后单击btnAdvSearch按钮,则没有任何反应。那是为什么?
提前致谢
答案 0 :(得分:3)
答案 1 :(得分:0)
使用firebug或类似的东西检查发出的HTML,您可能会注意到您的按钮不再位于表单标记内,并且位于body标记的末尾。
在你的OK按钮回调中你可以使用类似
的东西dialogBox.appendTo($('#FormIdHere'));
dialogBox是一个设置为
的变量var dialogBox = $('#DialogDiv').dialog({ autoOpen: false });
这应该将您的按钮添加回表单。
编辑:
这是我最近使用的代码片段(以下所有代码都是在onload函数中触发的,但是必须在onload函数之外声明reasonPostBack)
var button = $('input.rejectButton');
reasonPostBack = button.attr('onclick');
button.removeAttr('onclick');
var dialogBox = $('#ReasonDiv').dialog({ autoOpen: false, title: 'Please enter a reason', modal: true, bgiframe: true, buttons: { "Ok": function() {
if ($('input.reasonTextBox').val().length > 0) {
$(this).dialog('close');
dialogBox.appendTo($('#theform'));
reasonPostBack();
}
else
{
alert('You must enter a reason for rejection');
}
}
}
});
button.click(function() {
dialogBox.dialog('open');
return false;
});
首先,我使用
引用.Net回发var reasonPostBack = button.attr('onclick');
并保留以供日后使用,然后从按钮中删除点击事件,以“自动”停止后退。然后我构建对话框并为OK按钮添加一个匿名函数,这将运行我的代码来测试文本框中是否有任何内容,如果没有,它只是提醒用户,否则它;
关闭div
$(this).dialog('close');
将div添加回表格标签中,准备回发
dialogBox.appendTo($('#theform'));
然后调用原始回发
reasonPostBack();
最后一段代码
button.click(function() {
dialogBox.dialog('open');
return false;
});
将我们自己的事件处理程序添加到.Net按钮以打开之前实例化的对话框。
HTH
单稳