基于jquery ui的alert,confirm方案(支持换肤)
程序员文章站
2023-10-28 15:00:04
实现功能:
1.修改标题样式。把jquery ui的标题样式放上去。支持换肤。
2.修改按钮样式,换成jqueryui的button按钮样式。
3.将模式化窗口的背景换成了j...
实现功能:
1.修改标题样式。把jquery ui的标题样式放上去。支持换肤。
2.修改按钮样式,换成jqueryui的button按钮样式。
3.将模式化窗口的背景换成了jqueryui的模式化背景。
代码:
//首先要引入jquery,以及ui的包和皮肤的样式如: <script src="../js/ui/jquery-1.11.0.min.js"></script> <script src="../js/ui/jquery-migrate-1.1.0.min.js"></script> <script src="../js/ui/minified/jquery.ui.core.min.js"></script> <script src="../js/ui/minified/jquery.ui.widget.min.js"></script> <script src="../js/ui/minified/jquery.ui.mouse.min.js"></script> <script src="../js/ui/minified/jquery.ui.button.min.js"></script> <script src="../js/ui/minified/jquery.ui.draggable.min.js"></script> <link rel="stylesheet" type="text/css" href="../js/ui/themes/humanity/jquery-ui.css"></link> (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: .01, // transparency level of overlay overlaycolor: '#fff', // 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 = 'alert'; $.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( '<p id="popup_container" style="width:300px;height:150px;">' + '<h2 id="popup_title" style="margin:0;padding:0;" class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"></h2>' + '<p id="popup_content">' + '<p id="popup_message"></p>' + '</p>' + '</p>'); if( $.alerts.dialogclass ) $("#popup_container").addclass($.alerts.dialogclass); // ie6 fix //var pos = ($.browser.msie && parseint($.browser.version) <= 6 ) ? 'absolute' : 'fixed'; var pos = ('undefined' == typeof (document.body.style.maxheight)) ? '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 />') ); $("#popup_container").css({ minwidth: $("#popup_container").outerwidth(), maxwidth: $("#popup_container").outerwidth() }); $.alerts._reposition(); $.alerts._maintainposition(true); switch( type ) { case 'alert': $("#popup_message").after('<p id="popup_panel"><input type="button" onmouseover="$(this).addclass(\'ui-state-hover\')" onmouseout="$(this).removeclass(\'ui-state-hover\')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="' + $.alerts.okbutton + '" id="popup_ok" /></p>'); $("#popup_ok").click( function() { $.alerts._hide(); callback(true); }); $("#popup_ok").focus().keypress( function(e) { if( e.keycode == 13 || e.keycode == 27 ) $("#popup_ok").trigger('click'); }); break; case 'confirm': $("#popup_message").after('<p id="popup_panel"><input type="button" onmouseover="$(this).addclass(\'ui-state-hover\')" onmouseout="$(this).removeclass(\'ui-state-hover\')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="' + $.alerts.okbutton + '" id="popup_ok" /> <input type="button" onmouseover="$(this).addclass(\'ui-state-hover\')" onmouseout="$(this).removeclass(\'ui-state-hover\')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="' + $.alerts.cancelbutton + '" id="popup_cancel" /></p>'); $("#popup_ok").click( function() { $.alerts._hide(); if( callback ) callback(true); }); $("#popup_cancel").click( function() { $.alerts._hide(); if( callback ) callback(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_message").append('<br /><input type="text" size="30" id="popup_prompt" />').after('<p id="popup_panel"><input type="button" onmouseover="$(this).addclass(\'ui-state-hover\')" onmouseout="$(this).removeclass(\'ui-state-hover\')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="' + $.alerts.okbutton + '" id="popup_ok" /> <input type="button" onmouseover="$(this).addclass(\'ui-state-hover\')" onmouseout="$(this).removeclass(\'ui-state-hover\')" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" value="' + $.alerts.cancelbutton + '" id="popup_cancel" /></p>'); $("#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; } // 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); }, _overlay: function(status) { switch( status ) { case 'show': $.alerts._overlay('hide'); $("body").append('<p class="ui-widget-overlay" id="popup_overlay"></p>'); 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 ('undefined' == typeof (document.body.style.maxheight)) top = top + $(window).scrolltop(); $("#popup_container").css({ top: top + 'px', left: left + 'px' }); }, _maintainposition: function(status) { if( $.alerts.repositiononresize ) { switch(status) { case true: $(window).bind('resize', function() { $.alerts._reposition(); }); break; case false: $(window).unbind('resize'); break; } } } } // shortuct functions jalert = function(message, title, callback) { $.alerts.alert(message, title, callback); } jconfirm = function(message, title, callback) { $.alerts.confirm(message, title, callback); }; jprompt = function(message, value, title, callback) { $.alerts.prompt(message, value, title, callback); }; })(jquery); <style> *{margin:0;padding:0;} #popup_container { font-family: arial, sans-serif; font-size: 12px; min-width: 300px; /* dialog will be no smaller than this */ max-width: 600px; /* dialog will wrap after this width */ background: #fff; border: solid 1px #d09042; color: #000; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } #popup_content { background: 16px 16px no-repeat url(images/info.gif); padding: 1em 1.75em; margin: 0em; } #popup_content.alert { background-image: url(../images/info.png); } #popup_content.confirm { background-image: url(../images/important.png); } #popup_content.prompt { background-image: url(../images/help.png); } #popup_message { padding-left: 48px; height:30px; padding-top:10px; font-size:15px; } #popup_panel { text-align: center; margin: 1em 0em 0em 1em; } #popup_prompt { margin: .5em 0em; } </style> //使用方法 <script> jconfirm('您确定吗?', '系统 提示', function(r) { jalert('你选择了: ' + r, '友情提示'); }); </script>
上一篇: 外卖小哥不能承受之重