欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于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>