jquery - Dropdownlist SelectedIndexChanged 事件不会在 jQuery ui-Dialog 内触发

标签 jquery asp.net drop-down-menu selectedindexchanged

我在 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/

相关文章:

javascript - HTML 对象底部裁剪,在移动设备上被 chop

javascript - 使用 jquery 提交表单时指出表单中的特定错误位置

javascript - 从代码隐藏调用 javascript

c# - 如何使文本响应设备?

html - Excel VBA 更改 HTML 选择标记中的选项

Javascript 命令插入 HTML

php - 加速 jQuery AutoComplete(不可避免的长列表)

asp.net - 在不同的数据库架构上创建 ASP.NET 用户和角色表

JavaFX : CSS Dropdown Menu not Appearing In Netbeans IDE

javascript - 选择另一个下拉菜单时,Meteor 会动态过滤下拉菜单