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

时间:2014-03-11 13:46:09

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

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

2 个答案:

答案 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")