我在 jQuery ui-Dialog 中有一个带有 SelectedIndexChanged 事件的 Dropdownlist,但是当我在 DropdownList< 中选择一个项目时/strong>,尽管我已将 AutopostBack 设置为 true,但 SelectedIndexChanged 事件未触发,导致此问题的原因是什么?有什么想法吗?
这是我的示例代码:
$(document).ready(function () {
init();
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args) {
init();
}
});
javascript函数:
function init() {
$(".dialog-form").dialog({
autoOpen: false,
modal: true,
draggable: false,
width: 1000,
height: 600,
close: function () {
$('body').css('overflow', 'auto');
$(".dialog-form").dialog("close");
}
}).parent().appendTo("form1");
$(".add_ppmp").click(function () {
$(".dialog-form").dialog("open");
$('body').css('overflow', 'hidden');
});
}
aspx代码:
<div class="dialog-form" title="Item">
<div class="formholderborder">
<div class="subadetail">
<div class="listtable" style="margin-right: 15px;">
<asp:DropDownList ID="DropDownList1" runat="server" OnInit="LoadItems" AutoPostBack="true" OnSelectedIndexChanged="cmbItem_SelectedIndexChanged"></asp:DropDownList>
</div>
</div>
</div>
</div>
最佳答案
我将更广泛地解释这一点,以帮助 future 的 Google 员工。
如果你查看了页面的源码,你可能会立即拍着额头说“当然!”
当您使用 jQuery UI 创建对话框时,您创建对话框的元素来自 <form>
并进入 <body>
的根目录元素。这就是 jQuery UI 对话框的工作原理。
.aspx
背后的代码页面依赖于表单,表单之外的任何内容都无法触发回发,因此不会对依赖于表单之外的元素的任何事件运行任何隐藏代码。
幸运的是,解决这个问题非常简单:)。创建对话框后,只需将其附加到 <form>
.
您在代码中尝试这样做是正确的,但是您使用的选择器 $("form1")
正在寻找 <form1>
类型元素 - 不存在。
您可以使用以下代码修复它:.parent().appendTo("form");
尽管为了确保您获得第一个表单元素,您只能使用 .parent().appendTo("form:first");
.
如果form1
是你想要附加的表单元素的id,那么你当然会使用 $("#form1")
.
关于jquery - Dropdownlist SelectedIndexChanged 事件不会在 jQuery ui-Dialog 内触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22327561/