、dijit/Tooltip
提示条(Tooltip)是为页面上的空间提供辅助信息的常用手段,其样式定义在单独的样式文件中,开发人员可以自己修改。同时也提供了一些强大的功能,比如可以显示图片、图表和从服务器请求得到的数据等,可以控制显示的时间和出现持续的时间。
dijit/Tooltip 的属性
属性 | 属性类别 | 描述 |
connectId | String | 要挂载 Tooltip 的控件的 Id,可以为用逗号分隔的多个 Id |
label | String | 要显示的提示信息 |
showDelay | Integer 400 |
Tooltip 显示之前等待的时间,毫秒级 |
position |
String[] |
显示提示条的位置,字符串数组,可取值before,after,above,below |
--声明方式样例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Tooltip</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dojo/parser" , "dijit/Tooltip" , "dijit/form/Button" ]);
</script>
</head> <body class = "claro" >
<button id= "button1" data-dojo-type= "dijit/form/Button" >Tooltip above</button>
<button id= "button2" data-dojo-type= "dijit/form/Button" >Tooltip below</button>
<div data-dojo-type= "dijit/Tooltip" data-dojo-props= "connectId:'button1',position:['above']" >
在按钮上方显示提示信息
</div> <div data-dojo-type= "dijit/Tooltip" data-dojo-props= "connectId:'button2',position:['below']" >
在按钮下方显示提示信息
</div> </body> </html> |
--编程方式样例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Tooltip</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dijit/Tooltip" , "dojo/domReady!" ], function (Tooltip){
new Tooltip({
connectId: [ "exampleNode" ],
label : "提示条显示内容" ,
position:[ "above" , "below" ]
});
});
</script>
</head> <body class = "claro" >
<span id= "exampleNode" >测试提示条</span>
</body> </html> |
--使用selector和getContent()绑定多个节点:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Tooltip</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dijit/Tooltip" , "dojo/query!css2" , "dojo/domReady!" ], function (Tooltip){
new Tooltip({
connectId: "myTable" ,
selector: "tr" ,
getContent: function (matchedNode){
return matchedNode.getAttribute( "tooltipText" );
}
});
});
</script>
</head> <body class = "claro" >
<table id= "myTable" >
<tr tooltipText= "tooltip for row 1" ><td>row 1 </td></tr>
<tr tooltipText= "tooltip for row 2" ><td>row 2 </td></tr>
<tr tooltipText= "tooltip for row 3" ><td>row 3 </td></tr>
</table> </body> </html> |
2、dijit/Dialog
Extends: dijit/layout/ContentPane, dijit/_TemplatedMixin, dijit/form/_FormMixin, dijit/_DialogMixin, dijit/_CssStateMixin。
Dialog非常适合临时阻止用户对页面控件的操作,或者强制用户确认或对告警给出响应。对话框包括两种,一种是普通的对话框,一种是提示窗口的对话框。Dialog中可以包含任何DOM内容,无论是简单的HTML片段,还是复杂的布局部件,甚至自定义部件。
--普通对话框:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dijit/Dialog" , "dojo/domReady!" ], function (Dialog){
myDialog = new Dialog({
title: "My Dialog" ,
content: "Test content." ,
style: "width: 300px"
});
});
</script>
</head> <body class = "claro" >
<button onclick= "myDialog.show();" >show</button>
</body> </html> |
输出:
--利用dijitDialogPaneContentArea和dijitDialogPaneActionBar自定义对话框:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dijit/Dialog" , "dijit/form/TextBox" , "dijit/form/Button" ]);
</script>
</head> <body class = "claro" >
<div data-dojo-type= "dijit/Dialog" data-dojo-id= "myDialog" title= "Name and Address" >
<table class = "dijitDialogPaneContentArea" >
<tr>
<td>< label for = "name" >Name:</ label ></td>
<td><input data-dojo-type= "dijit/form/TextBox" name= "name" id= "name" ></td>
</tr>
<tr>
<td>< label for = "address" >Address:</ label ></td>
<td><input data-dojo-type= "dijit/form/TextBox" name= "address" id= "address" ></td>
</tr>
</table>
<div class = "dijitDialogPaneActionBar" >
<button data-dojo-type= "dijit/form/Button" type= "submit" id= "ok" >OK</button>
<button data-dojo-type= "dijit/form/Button" type= "button" data-dojo-props= "onClick:function(){myDialog.hide();}"
id= "cancel" >Cancel</button>
</div>
</div> <button data-dojo-type= "dijit/form/Button" type= "button" onClick= "myDialog.show();" >
Show me!
</button> </body> </html> |
输出:
--动态设置对话框中的内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dijit/Dialog" , "dijit/form/Button" , "dojo/domReady!" ], function (Dialog, Button){
var myDialog = new Dialog({
title: "Programmatic Dialog Creation" ,
style: "width: 300px"
});
var myButton = new Button({
label : "Show me!" ,
onClick: function (){
myDialog. set ( "content" , "Hey, I wasn't there before, I was added at " + new Date () + "!" );
myDialog.show();
}
}, "progbutton" );
});
</script>
</head> <body class = "claro" >
<p>注意:时间在变化。</p> <button id= "progbutton" type= "button" >Show me!</button>
</body> </html> |
输出:
--更改衬底颜色:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<style type= "text/css" >
#dialogColor_underlay {
background-color:green;
}
</style>
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dojo/parser" , "dijit/Dialog" , "dijit/form/Button" ]);
</script>
</head> <body class = "claro" >
<div id= "dialogColor" title= "Colorful" data-dojo-type= "dijit/Dialog" >
My background color is Green
</div> <button id= "button4" data-dojo-type= "dijit/form/Button" type= "button" >Show me!
<script type= "dojo/method" data-dojo-event= "onClick" data-dojo-args= "evt" >
require([ "dijit/registry" ], function (registry){
registry.byId( "dialogColor" ).show();
});
</script>
</button> </body> </html> |
输出:
备注:衬底颜色是通过样式表ID属性来确定,若dijit/Dialog属性的ID为dialogColor,则衬底样式表为:#dialogColor_underlay。即Dialog+_underlay。
--具有表单对话框:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dojo/parser" , "dijit/Dialog" , "dijit/form/Button" , "dijit/form/TextBox" , "dijit/form/DateTextBox" , "dijit/form/TimeTextBox" ]);
</script>
</head> <body class = "claro" >
<div data-dojo-type= "dijit/Dialog" data-dojo-id= "myFormDialog" title= "Form Dialog"
execute= "alert('submitted args:\n' + dojo.toJson(arguments[0], true));" >
<div class = "dijitDialogPaneContentArea" >
<table>
<tr>
<td>< label for = "name" >Name: </ label ></td>
<td><input data-dojo-type= "dijit/form/TextBox" type= "text" name= "name" id= "name" ></td>
</tr>
<tr>
<td>< label for = "loc" >Location: </ label ></td>
<td><input data-dojo-type= "dijit/form/TextBox" type= "text" name= "loc" id= "loc" ></td>
</tr>
<tr>
<td>< label for = "sdate" >Start date: </ label ></td>
<td><input data-dojo-type= "dijit/form/DateTextBox" data-dojo-id= "myStartDate" onChange= "myEndDate.constraints.min = arguments[0];" type= "text" name= "sdate" id= "sdate" ></td>
</tr>
<tr>
<td>< label for = "edate" >End date: </ label ></td>
<td><input data-dojo-type= "dijit/form/DateTextBox" data-dojo-id= "myEndDate" onChange= "myStartDate.constraints.max = arguments[0];" type= "text" name= "edate" id= "edate" ></td>
</tr>
<tr>
<td>< label for = "time" >Time: </ label ></td>
<td><input data-dojo-type= "dijit/form/TimeTextBox" type= "text" name= "time" id= "time" ></td>
</tr>
<tr>
<td>< label for = "desc" >Description: </ label ></td>
<td><input data-dojo-type= "dijit/form/TextBox" type= "text" name= "desc" id= "desc" ></td>
</tr>
</table>
</div>
<div class = "dijitDialogPaneActionBar" >
<button data-dojo-type= "dijit/form/Button" type= "submit" onClick= "return myFormDialog.isValid();" >
OK
</button>
<button data-dojo-type= "dijit/form/Button" type= "button" onClick= "myFormDialog.hide()" >
Cancel
</button>
</div>
</div> <button id= "buttonThree" data-dojo-type= "dijit/form/Button" type= "button" onClick= "myFormDialog.show();" >
Show me!
</button> </body> </html> |
输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dojo/parser" , "dijit/Dialog" , "dijit/form/Form" , "dijit/form/Button" , "dijit/form/ValidationTextBox" ]);
</script>
</head> <body class = "claro" >
<div data-dojo-type= "dijit/Dialog" data-dojo-id= "myFormDialog" title= "Form Dialog" style= "display: none" >
<form data-dojo-type= "dijit/form/Form" data-dojo-id= "myForm" >
<script type= "dojo/on" data-dojo-event= "submit" data-dojo-args= "e" >
e.preventDefault(); // prevent the default submit
if (!myForm.isValid()){ alert( 'Please fix fields' ); return ; }
window.alert( "Would submit here via dojo/xhr" );
// xhr.post( {
// url: 'foo.com/handler',
// content: { field: 'go here' },
// handleAs: 'json'
// load: function(data){ .. },
// error: function(data){ .. }
// });
</script>
<div class = "dijitDialogPaneContentArea" >
< label >Foo:</ label ><div data-dojo-type= "dijit/form/ValidationTextBox" data-dojo-props= "required:true" ></div>
</div>
<div class = "dijitDialogPaneActionBar" >
<button data-dojo-type= "dijit/form/Button" type= "submit" >OK</button>
<button data-dojo-type= "dijit/form/Button" type= "button"
data-dojo-props= "onClick:function(){myFormDialog.hide();}" >Cancel</button>
</div>
</form>
</div> <button id= "buttonThree" data-dojo-type= "dijit/form/Button" type= "button" >Show me!
<script type= "dojo/method" data-dojo-event= "onClick" data-dojo-args= "evt" >
myFormDialog.show();
</script>
</button> </body> </html> |
输出:
--条款和条件对话框:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dijit/Dialog" , "dijit/form/Button" , "dijit/form/RadioButton" , "dojo/dom" , "dojo/dom-style" ],
function (Dialog, Button, RadioButton, dom, domStyle){
accept = function (){
dom.byId( "decision" ).innerHTML = "接受条款和条件!" ;
domStyle. set ( "decision" , "color" , "#00CC00" );
myFormDialog.hide();
};
decline = function (){
dom.byId( "decision" ).innerHTML = "不接受条款和条件!" ;
domStyle. set ( "decision" , "color" , "#FF0000" );
myFormDialog.hide();
}
});
</script>
</head> <body class = "claro" >
<div data-dojo-type= "dijit/Dialog" data-dojo-id= "myFormDialog" title= "接受或拒绝条款" >
<h1>条款</h1>
<div style= "width:400px; border:1px solid #b7b7b7; background:#fff; padding:8px; margin:0 auto; height:150px; overflow:auto;" >
这里是条款内容......
</div>
<br />
<table>
<input type= "radio" data-dojo-type= "dijit/form/RadioButton" name= "agreement" id= "radioOne" value= "accept" data-dojo-props= "onClick:accept" />
< label for = "radioOne" >
接受条款
</ label >
</td>
</tr>
<tr>
<td>
<input type= "radio" data-dojo-type= "dijit/form/RadioButton" name= "agreement" id= "radioTwo" value= "decline" data-dojo-props= "onClick:decline" />
< label for = "radioTwo" >
拒绝条款
</ label >
</td>
</tr>
</table>
</div> </div> < label id= "decision" style= "color:#FF0000;" >
接受或拒绝条款结果展示
</ label >
<button id= "termsButton" data-dojo-type= "dijit/form/Button" type= "button" onClick= "myFormDialog.show();" >
View terms and conditions to accept
</button> </body> </html> |
输出结果:
--HREF调用和设置.dijitDialogPaneContent属性修改对话框尺寸 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<style type= "text/css" >
.dijitDialogPaneContent {
width: 600px !important;
height: auto !important;
}
</style>
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dojo/parser" , "dijit/form/Button" , "dijit/Dialog" ]);
</script>
</head> <body class = "claro" >
<div data-dojo-id= "myExternalDialog" data-dojo-type= "dijit/Dialog" title= "My external dialog"
href= "dojo/resources/LICENSE" >
</div> <p>XHR调用</p> <button data-dojo-type= "dijit/form/Button" onClick= "myExternalDialog.show();" type= "button" >Show me!</button>
</body> </html> |
输出:
3、dijit/TooltipDialog
Extends: dijit/layout/ContentPane, dijit/_TemplatedMixin, dijit/form/_FormMixin, dijit/_DialogMixin。
TooltipDialog类似Dialog,但当鼠标点击屏幕任何位置时,TooltipDialog都可以关闭。
--声明方式创建:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([ "dojo/parser" , "dijit/TooltipDialog" , "dijit/form/DropDownButton" , "dijit/form/TextBox" , "dijit/form/Button" ]);
</script>
</head> <body class = "claro" >
<div data-dojo-type= "dijit/form/DropDownButton" >
<span>Register</span>
<div data-dojo-type= "dijit/TooltipDialog" >
< label for = "name2" >Name:</ label > <input data-dojo-type= "dijit/form/TextBox" id= "name2" name= "name2" /><br />
< label for = "hobby2" >Hobby:</ label > <input data-dojo-type= "dijit/form/TextBox" id= "hobby2" name= "hobby2" /><br />
<button data-dojo-type= "dijit/form/Button" type= "submit" >Save</button>
</div>
</div> </body> </html> |
--编程方式创建:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([
"dijit/TooltipDialog" ,
"dijit/form/TextBox" ,
"dijit/form/Button" ,
"dijit/form/DropDownButton" ,
"dojo/dom" ,
"dojo/domReady!"
], function (TooltipDialog, TextBox, Button, DropDownButton, dom) {
var myDialog = new TooltipDialog({
content: '<label for="name">Name:</label> <input data-dojo-type="dijit/form/TextBox" id="name" name="name"><br>' +
'<label for="hobby">Hobby:</label> <input data-dojo-type="dijit/form/TextBox" id="hobby" name="hobby"><br>' +
'<button data-dojo-type="dijit/form/Button" type="submit">Save</button>'
});
var myButton = new DropDownButton({
label : "show tooltip dialog" ,
dropDown: myDialog
});
dom.byId( "dropDownButtonContainer" ).appendChild(myButton.domNode);
});
</script>
</head> <body class = "claro" >
<div id= "dropDownButtonContainer" ></div>
</body> </html> |
--鼠标移动样例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<!DOCTYPE HTML> <html lang= "en" >
<head> <meta charset= "utf-8" >
<title>Demo: Dialog</title>
<link rel= "stylesheet" href= "dijit/themes/claro/claro.css" >
<script src= "dojo/dojo.js" data-dojo-config= "async: true, parseOnLoad: true" ></script>
<script>
require([
"dijit/TooltipDialog" ,
"dijit/popup" ,
"dojo/on" ,
"dojo/dom" ,
"dojo/domReady!"
], function (TooltipDialog, popup, on, dom){
var myTooltipDialog = new TooltipDialog({
id: 'myTooltipDialog' ,
style: "width: 300px;" ,
content: "<p>I have a mouse leave event handler that will close the dialog." ,
onMouseLeave: function (){
popup.close(myTooltipDialog);
}
});
var node = dom.byId( 'mouseovernode' );
console.log(on, node);
on(node, 'mouseover' , function (evt){
popup.open({
popup: myTooltipDialog,
around: node
});
});
});
</script>
</head> <body class = "claro" >
<div id= "mouseovernode" >Move the mouse over me to pop up the dialog.</div>
</body> </html> |
本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1571820,如需转载请自行联系原作者