jquery.alerts.js模拟js的alert,confirm的插件

在http://www.aceona.com/网站发现的模拟alert confirm的插件。
http://labs.abeautifulsite.net/archived/下有好几个别的组件,jQuery-alerts,jquery-fileTree,jquery-multiSelect这三个是比较有用的,jQuery-alert的demo网址:http://labs.abeautifulsite.net/archived/jquery-alerts/demo/
jQuery-alert有jAlert(msg),jConfirm(msg,title,callback),jPromt(msg,value,title,callback)四种形式,
1.msg可以用样式。
2.这几个的样式均可自定义。

<!-- lang: js -->
// jQuery Alert Dialogs Plugin
//
// Version 1.1
//
// Cory S.N. LaViska
// A Beautiful Site (http://abeautifulsite.net/)
// 14 May 2009
//
// Visit http://abeautifulsite.net/notebook/87 for more information
//
// Usage:
//      jAlert( message, [title, callback] )
//      jConfirm( message, [title, callback] )
//      jPrompt( message, [value, title, callback] )
// 
// History:
//
//      1.00 - Released (29 December 2008)
//
//      1.01 - Fixed bug where unbinding would destroy all resize events
//
// License:
// 
// This plugin is dual-licensed under the GNU General Public License and the MIT License and
// is copyright 2008 A Beautiful Site, LLC. 
//
(function($) {

    $.alerts = {

        // These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time

        verticalOffset: -75,                // vertical offset of the dialog from center screen, in pixels
        horizontalOffset: 0,                // horizontal offset of the dialog from center screen, in pixels/
        repositionOnResize: true,           // re-centers the dialog on window resize
        overlayOpacity: 0.4,                // transparency level of overlay
        overlayColor: '#000',               // base color of overlay
        draggable: true,                    // make the dialogs draggable (requires UI Draggables plugin)
        okButton: '确 定',         // text for the OK button
        cancelButton: '取 消', // text for the Cancel button
        dialogClass: null,                  // if specified, this class will be applied to all dialogs

        // Public methods

        alert: function(message, title, callback) {
            if( title == null ) title = '温馨提示';
            $.alerts._show(title, message, null, 'alert', function(result) {
                if( callback ) callback(result);
            });
        },

        confirm: function(message, title, callback) {
            if( title == null ) title = 'Confirm';
            $.alerts._show(title, message, null, 'confirm', function(result) {
                if( callback ) callback(result);
            });
        },

        prompt: function(message, value, title, callback) {
            if( title == null ) title = 'Prompt';
            $.alerts._show(title, message, value, 'prompt', function(result) {
                if( callback ) callback(result);
            });
        },

        // Private methods

        _show: function(title, msg, value, type, callback) {

            $.alerts._hide();
            $.alerts._overlay('show');

            $("BODY").append(
              '<div id="popup_container" class="app_popup_a"><div class="ie_out"><div class="ie_in"><div class="ie_last"></div></div></div>' +
                '<h1 id="popup_title"></h1>' +
                '<div id="popup_nr_bg"><div id="popup_content">' +
                  '<div id="popup_message"></div>' +
                '</div></div>' +
              '</div>');

            if( $.alerts.dialogClass ) $("#popup_container").addClass($.alerts.dialogClass);

            // IE6 Fix
            var pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 'absolute' : 'fixed'; 

            $("#popup_container").css({
                position: pos,
                zIndex: 99999,
                padding: 0,
                margin: 0
            });

            $("#popup_title").text(title);
            $("#popup_content").addClass(type);
            $("#popup_message").text(msg);
            $("#popup_message").html( $("#popup_message").text().replace(/\n/g, '<br />') );            
            $.alerts._reposition();
            $.alerts._maintainPosition(true);
            $_select=$("select");
            if($_select.length>0){
               $_select.css("visibility","hidden");
            }

            switch( type ) {
                case 'alert':                   
                    $("#popup_content").after('<div id="popup_panel" ><a title="'+$.alerts.okButton+'" class="pop_app_btn white" href="javascript:void(0)" id="popup_ok"><span class="itembody">'+$.alerts.okButton+'</span></a></div>');
                    $("#popup_ok").click( function() {
                        $.alerts._hide();
                        callback(true);
                        return false;
                    });
                    $("#popup_container").focus().bind("keydown",function(e){
                        if( e.keyCode == 27 ) {
                            $("#popup_ok").focus().trigger('click');
                             return false;
                        }
                    });

                break;
                case 'confirm':
                    $("#popup_content").after('<div id="popup_panel"><a title="'+$.alerts.okButton+'" class="pop_app_btn white" href="javascript:void(0)" id="popup_ok"><span class="itembody">'+$.alerts.okButton+'</span></a><a title="'+$.alerts.cancelButton+'" class="pop_app_btn white m_l_12" href="javascript:void(0)" id="popup_cancel"><span class="itembody">'+$.alerts.cancelButton+'</span></a></div>');
                    $("#popup_ok").click( function() {
                        $.alerts._hide();
                        if( callback ) {
                            callback(true);
                        }
                        return false;
                    });
                    $("#popup_cancel").click( function() {
                        $.alerts._hide();
                        if( callback ){callback(false);}
                        return false;
                    });
                    $("#popup_ok").focus();
                    $("#popup_ok, #popup_cancel").keypress( function(e) {
                        if( e.keyCode == 13 ) $("#popup_ok").trigger('click');
                        if( e.keyCode == 27 ) $("#popup_cancel").trigger('click');
                    });
                break;
                case 'prompt':
                    $("#popup_content").append('<br /><input type="text" size="30" id="popup_prompt" class="b_btn_a" />').after('<div id="popup_panel"><input type="button" value="' + $.alerts.okButton + '" id="popup_ok" /> <input type="button" value="' + $.alerts.cancelButton + '" id="popup_cancel" /></div>');
                    $("#popup_prompt").width( $("#popup_message").width() );
                    $("#popup_ok").click( function() {
                        var val = $("#popup_prompt").val();
                        $.alerts._hide();
                        if( callback ) callback( val );
                    });
                    $("#popup_cancel").click( function() {
                        $.alerts._hide();
                        if( callback ) callback( null );
                    });
                    $("#popup_prompt, #popup_ok, #popup_cancel").keypress( function(e) {
                        if( e.keyCode == 13 ) $("#popup_ok").trigger('click');
                        if( e.keyCode == 27 ) $("#popup_cancel").trigger('click');
                    });
                    if( value ) $("#popup_prompt").val(value);
                    $("#popup_prompt").focus().select();
                break;
            }
           /*
           var isIE6=($.browser.msie && parseInt($.browser.version) <= 6);
           var isIE=$.browser.msie;      
                if(isIE){
                    window.setTimeout(function(){
                                     $("#popup_container").css({
                                        minWidth: $("#popup_container").outerWidth(),
                                        maxWidth: $("#popup_container").outerWidth()
                                    });
                                    $("#popup_title").css("width",$("#popup_container").outerWidth()-16);
                                },50);
                }
            */  
            // Make draggable
            if( $.alerts.draggable ) {
                try {
                    $("#popup_container").draggable({ handle: $("#popup_title") });
                    $("#popup_title").css({ cursor: 'move' });
                } catch(e) { /* requires jQuery UI draggables */ }
            }
        },

        _hide: function() {
            $("#popup_container").remove();
            $.alerts._overlay('hide');
            $.alerts._maintainPosition(false);
            if($("select").length>0){
            $("select").css("visibility","visible");            
            }
        },

        _overlay: function(status) {
            switch( status ) {
                case 'show':
                    $.alerts._overlay('hide');
                    $("BODY").append('<div id="popup_overlay"></div>');
                    $("#popup_overlay").css({
                        position: 'absolute',
                        zIndex: 99998,
                        top: '0px',
                        left: '0px',
                        width: '100%',
                        height: $(document).height(),
                        background: $.alerts.overlayColor,
                        opacity: $.alerts.overlayOpacity
                    });
                break;
                case 'hide':
                    $("#popup_overlay").remove();
                break;
            }
        },

        _reposition: function() {
            var top = (($(window).height() / 2) - ($("#popup_container").outerHeight() / 2)) + $.alerts.verticalOffset;
            var left = (($(window).width() / 2) - ($("#popup_container").outerWidth() / 2)) + $.alerts.horizontalOffset;
            if( top < 0 ) top = 0;
            if( left < 0 ) left = 0;

            // IE6 fix
            if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = top + $(window).scrollTop();

            $("#popup_container").css({
                top: top + 'px',
                left: left + 'px'
            });
            $("#popup_overlay").height( $(document).height() );
        },

        _maintainPosition: function(status) {
            if( $.alerts.repositionOnResize ) {
                switch(status) {
                    case true:
                        $(window).bind('resize', $.alerts._reposition);
                    break;
                    case false:
                        $(window).unbind('resize', $.alerts._reposition);
                    break;
                }
            }
        }

    }

    // Shortuct functions
    window.jAlert = function(message, title, callback) {
        $.alerts.alert(message, title, callback);
    }

    window.jConfirm = function(message, title, callback) {
        $.alerts.confirm(message, title, callback);
    };

    window.jPrompt = function(message, value, title, callback) {
        $.alerts.prompt(message, value, title, callback);
    };

})(jQuery);

你可能感兴趣的:(jquery.alerts.js模拟js的alert,confirm的插件)