jQuery UI Dialog with ASP.NET button postback

前端 未结 17 2051
鱼传尺愫
鱼传尺愫 2020-11-22 14:43

I have a jQuery UI Dialog working great on my ASP.NET page:

jQuery(function() {
    jQuery(\"#dialog\").dialog({
        draggable: true,
        resizable:          


        
17条回答
  •  孤城傲影
    2020-11-22 15:27

    I didn't want to have to work around this problem for every dialog in my project, so I created a simple jQuery plugin. This plugin is merely for opening new dialogs and placing them within the ASP.NET form:

    (function($) {
        /**
         * This is a simple jQuery plugin that works with the jQuery UI
         * dialog. This plugin makes the jQuery UI dialog append to the
         * first form on the page (i.e. the asp.net form) so that
         * forms in the dialog will post back to the server.
         *
         * This plugin is merely used to open dialogs. Use the normal
         * $.fn.dialog() function to close dialogs programatically.
         */
        $.fn.aspdialog = function() {
            if (typeof $.fn.dialog !== "function")
                return;
    
            var dlg = {};
    
            if ( (arguments.length == 0)
                    || (arguments[0] instanceof String) ) {
                // If we just want to open it without any options
                // we do it this way.
                dlg = this.dialog({ "autoOpen": false });
                dlg.parent().appendTo('form:first');
                dlg.dialog('open');
            }
            else {
                var options = arguments[0];
                options.autoOpen = false;
                options.bgiframe = true;
    
                dlg = this.dialog(options);
                dlg.parent().appendTo('form:first');
                dlg.dialog('open');
            }
        };
    })(jQuery);

    So to use the plugin, you first load jQuery UI and then the plugin. Then you can do something like the following:

    $('#myDialog1').aspdialog(); // Simple
    $('#myDialog2').aspdialog('open'); // The same thing
    $('#myDialog3').aspdialog({title: "My Dialog", width: 320, height: 240}); // With options!
    

    To be clear, this plugin assumes you are ready to show the dialog when you call it.

提交回复
热议问题