JQuery dialog弹出对话框解决Asp.net服务器控件无法执行后台代码的方法

卡奇莫多 2012-09-07

搜索相关问题发现,其中主要问题是出在:JQuery会把Dialog的元素append到Body里面,而不是form里面。研究了页面源码后发现,jQuery UI Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部、form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内。也就是说,原先在form内的表单在Dialog初始化后就被移到form外了,这就导致了Dialog模板内表单全部失效。

解决方法是增加一行代码即可:dlg.parent().appendTo(jQuery("form:first")); 

也就是修改开始部分创建对话框的脚本即可:

<script language="javascript">
        $(function(){
            var dlg = jQuery("#dd").dialog({
                draggable: true,
                resizable: true,
                closed:true,
                show: 'Transfer',
                hide: 'Transfer',
                autoOpen: false,
                width:600,
                minHeight: 10,
                minwidth: 10
            });
            dlg.parent().appendTo(jQuery("form:first"));
        });

        function open1(){
            $('#dd').dialog('open');
        }
        function close1(){
            $('#dd').dialog('close');
        }
    </script>

  另外你也可以通过这种方法来处理该问题:

$('#dialog_link').click(function () { 

       $('#dialog').dialog('open');
        $('#dialog').parent().appendTo($("form:first"))
        return false;

    });

 参考:

http://stackoverflow.com/questions/757232/jquery-ui-dialog-with-asp-net-button-postback

相关推荐