我在 jQuery ui-Dialog 中有一个带 SelectedIndexChanged 事件的下拉列表,但是当我在 DropdownList <中选择一个项目时/ strong>, SelectedIndexChanged 事件未触发但我已将 AutopostBack 设置为 true ,这可能是由此引起的问题?任何想法?
以下是我的示例代码:
$(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>
答案 0 :(得分:2)
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($("form:first"));
$(".add_ppmp").click(function () {
$(".dialog-form").dialog("open");
$('body').css('overflow', 'hidden');
});
}
将jquery ui对话框添加到上面的表单中。
答案 1 :(得分:2)
我会更广泛地解释这一点,以帮助未来的googlers。
如果您查看页面的来源,您可以立即拍打前额并说“#34;”当然!&#34;
当您使用jQuery UI创建对话框时,您创建对话框的元素来自<form>
并进入<body>
元素的根目录。这就是jQuery UI对话框的工作方式。
.aspx
页面背后的代码取决于表单,表单外的任何内容都不能触发回发,因此在依赖于表单外部元素的任何事件上都不会运行任何代码。
幸运的是,修复此问题很简单:)。创建对话框后,只需将其附加到<form>
。
您正确地尝试在代码中执行此操作,但您使用$("form1")
的选择器正在寻找一个<form1>
类型元素 - 它不存在。
您可以使用以下代码修复它:.parent().appendTo("form");
虽然为了确保您只获得第一个表单元素,但您可以使用.parent().appendTo("form:first");
。
如果form1
是您要附加到的表单元素的ID,那么您当然会使用$("#form1")
。