jQuery UI 实例 – 对话框(Dialog)
在一个交互覆盖层中打开内容。
如需了解更多有关 dialog 部件的细节,请查看 API 文档 对话框部件(Dialog Widget)。
默认功能
基本的对话框窗口是一个定位于视区中的覆盖层,同时通过一个 iframe 与页面内容分隔开(就像 select 元素)。它由一个标题栏和一个内容区域组成,且可以移动,调整尺寸,默认可通过 \’x\’ 图标关闭。
<!doctype html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>jQuery UI 对话框(Dialog) - 默认功能</title>
<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">
<script src=\"//code.jquery.com/jquery-1.9.1.js\"></script>
<script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script>
<link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\">
<script>
$(function() {
$( \"#dialog\" ).dialog();
});
</script>
</head>
<body>
<div title=\"基本的对话框\">
<p>这是一个默认的对话框,用于显示信息。对话框窗口可以移动,调整尺寸,默认可通过 \'x\' 图标关闭。</p>
</div>
</body>
</html>
动画
可以通过为 show/hide 属性指定一个特效来动画显示对话框。您必须为想使用的特效引用独立的特效文件。
<!doctype html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>jQuery UI 对话框(Dialog) - 动画</title>
<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">
<script src=\"//code.jquery.com/jquery-1.9.1.js\"></script>
<script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script>
<link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\">
<script>
$(function() {
$( \"#dialog\" ).dialog({
autoOpen: false,
show: {
effect: \"blind\",
duration: 1000
},
hide: {
effect: \"explode\",
duration: 1000
}
});
$( \"#opener\" ).click(function() {
$( \"#dialog\" ).dialog( \"open\" );
});
});
</script>
</head>
<body>
<div title=\"Basic dialog\">
<p>这是一个动画显示的对话框,用于显示信息。对话框窗口可以移动,调整尺寸,默认可通过 \'x\' 图标关闭。</p>
</div>
<button>打开对话框</button>
</body>
</html>
基本的模态
模态对话框防止用户与对话框以外的页面其他部分进行交互,直到对话框关闭为止。
<!doctype html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>jQuery UI 对话框(Dialog) - 基本的模态</title>
<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">
<script src=\"//code.jquery.com/jquery-1.9.1.js\"></script>
<script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script>
<link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\">
<script>
$(function() {
$( \"#dialog-modal\" ).dialog({
height: 140,
modal: true
});
});
</script>
</head>
<body>
<div title=\"基本的模态对话框\">
<p>添加模态覆盖屏幕,让对话框看起来更突出,因为它让页面上其他内容变暗。</p>
</div>
<p>Sed vel diam id libero <a href=\"http://www.w3cschool.cc\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>
</body>
</html>
模态确认
确认一个动作可能是破坏性的也可能是有意义的。设置 modal 选项为 true,并通过 buttons 选项来指定主要的和次要的用户动作。
<!doctype html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>jQuery UI 对话框(Dialog) - 模态确认</title>
<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">
<script src=\"//code.jquery.com/jquery-1.9.1.js\"></script>
<script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script>
<link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\">
<script>
$(function() {
$( \"#dialog-confirm\" ).dialog({
resizable: false,
height:140,
modal: true,
buttons: {
\"Delete all items\": function() {
$( this ).dialog( \"close\" );
},
Cancel: function() {
$( this ).dialog( \"close\" );
}
}
});
});
</script>
</head>
<body>
<div title=\"清空回收站吗?\">
<p><span style=\"float:left; margin:0 7px 20px 0;\"></span>这些项目将被永久删除,并且无法恢复。您确定吗?</p>
</div>
<p>Sed vel diam id libero <a href=\"http://www.w3cschool.cc\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>
</body>
</html>
模态表单
使用模态对话框来请求用户在一个多步骤过程中输入数据。在内容区域嵌入 form 标记,设置 modal 选项为 true,并通过 buttons 选项来指定主要的和次要的用户动作。
<!doctype html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>jQuery UI 对话框(Dialog) - 模态表单</title>
<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">
<script src=\"//code.jquery.com/jquery-1.9.1.js\"></script>
<script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script>
<link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\">
<style>
body { font-size: 62.5%; }
label, input { display:block; }
input.text { margin-bottom:12px; width:95%; padding: .4em; }
fieldset { padding:0; border:0; margin-top:25px; }
h1 { font-size: 1.2em; margin: .6em 0; }
div#users-contain { width: 350px; margin: 20px 0; }
div#users-contain table { margin: 1em 0; border-collapse: collapse; width: 100%; }
div#users-contain table td, div#users-contain table th { border: 1px solid #eee; padding: .6em 10px; text-align: left; }
.ui-dialog .ui-state-error { padding: .3em; }
.validateTips { border: 1px solid transparent; padding: 0.3em; }
</style>
<script>
$(function() {
var name = $( \"#name\" ),
email = $( \"#email\" ),
password = $( \"#password\" ),
allFields = $( [] ).add( name ).add( email ).add( password ),
tips = $( \".validateTips\" );
function updateTips( t ) {
tips
.text( t )
.addClass( \"ui-state-highlight\" );
setTimeout(function() {
tips.removeClass( \"ui-state-highlight\", 1500 );
}, 500 );
}
function checkLength( o, n, min, max ) {
if ( o.val().length > max || o.val().length < min ) {
o.addClass( \"ui-state-error\" );
updateTips( \"\" + n + \" 的长度必须在 \" +
min + \" 和 \" + max + \" 之间。\" );
return false;
} else {
return true;
}
}
function checkRegexp( o, regexp, n ) {
if ( !( regexp.test( o.val() ) ) ) {
o.addClass( \"ui-state-error\" );
updateTips( n );
return false;
} else {
return true;
}
}
$( \"#dialog-form\" ).dialog({
autoOpen: false,
height: 300,
width: 350,
modal: true,
buttons: {
\"创建一个帐户\": function() {
var bValid = true;
allFields.removeClass( \"ui-state-error\" );
bValid = bValid && checkLength( name, \"username\", 3, 16 );
bValid = bValid && checkLength( email, \"email\", 6, 80 );
bValid = bValid && checkLength( password, \"password\", 5, 16 );
bValid = bValid && checkRegexp( name, /^[a-z]([0-9a-z_])+$/i, \"用户名必须由 a-z、0-9、下划线组成,且必须以字母开头。\" );
// From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
bValid = bValid && checkRegexp( email, /^((([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i, \"eg. ui@jquery.com\" );
bValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, \"密码字段只允许: a-z 0-9\" );
if ( bValid ) {
$( \"#users tbody\" ).append( \"<tr>\" +
\"<td>\" + name.val() + \"</td>\" +
\"<td>\" + email.val() + \"</td>\" +
\"<td>\" + password.val() + \"</td>\" +
\"</tr>\" );
$( this ).dialog( \"close\" );
}
},
Cancel: function() {
$( this ).dialog( \"close\" );
}
},
close: function() {
allFields.val( \"\" ).removeClass( \"ui-state-error\" );
}
});
$( \"#create-user\" )
.button()
.click(function() {
$( \"#dialog-form\" ).dialog( \"open\" );
});
});
</script>
</head>
<body>
<div title=\"创建新用户\">
<p>所有的表单字段都是必填的。</p>
<form>
<fieldset>
<label for=\"name\">名字</label>
<input type=\"text\" name=\"name\">
<label for=\"email\">邮箱</label>
<input type=\"text\" name=\"email\" value=\"\">
<label for=\"password\">密码</label>
<input type=\"password\" name=\"password\" value=\"\">
</fieldset>
</form>
</div>
<div>
<h1>已有的用户:</h1>
<table>
<thead>
<tr>
<th>名字</th>
<th>邮箱</th>
<th>密码</th>
</tr>
</thead>
<tbody>
<tr>
<td>John Doe</td>
<td>john.doe@example.com</td>
<td>johndoe1</td>
</tr>
</tbody>
</table>
</div>
<button>创建新用户</button>
</body>
</html>
模态消息
使用模态对话框来在下一步动作执行之前确认信息和动作。设置 modal 选项为 true,并通过 buttons 选项来指定主要的动作(Ok)。
<!doctype html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>jQuery UI 对话框(Dialog) - 模态消息</title>
<link rel=\"stylesheet\" href=\"//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css\">
<script src=\"//code.jquery.com/jquery-1.9.1.js\"></script>
<script src=\"//code.jquery.com/ui/1.10.4/jquery-ui.js\"></script>
<link rel=\"stylesheet\" href=\"http://jqueryui.com/resources/demos/style.css\">
<script>
$(function() {
$( \"#dialog-message\" ).dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( \"close\" );
}
}
});
});
</script>
</head>
<body>
<div title=\"下载完成\">
<p>
<span style=\"float:left; margin:0 7px 50px 0;\"></span>
您的文件已经成功下载到文件夹中。
</p>
<p>
当前使用存储空间的 <b>36%</b>。
</p>
</div>
<p>Sed vel diam id libero <a href=\"http://www.w3cschool.cc\">rutrum convallis</a>. Donec aliquet leo vel magna. Phasellus rhoncus faucibus ante. Etiam bibendum, enim faucibus aliquet rhoncus, arcu felis ultricies neque, sit amet auctor elit eros a lectus.</p>
</body>
</html>
点我分享笔记