vueå®ç°åå»ç¼è¾
JS å®ç°åå»ç¼è¾
åå§ HTML代ç ï¼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!DOCTYPE html> < html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "ie=edge" >
< title >Document</ title >
</ head >
< body >
< div class = "form-group" >
< label >å§åï¼</ label >
< span >å¼ ä¸</ span >
</ div >
< div class = "form-group" >
< label >个人ä»ç»ï¼</ label >
< span >æå°±æ¯æï¼é¢è²ä¸ä¸æ ·ççç«ï¼</ span >
</ div >
</ body >
</ html >
|
åå§ é¡µé¢ææï¼
JS代ç ï¼
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
|
<!DOCTYPE html> <html lang= "en" >
<head> <meta charset= "UTF-8" >
<meta name= "viewport" content= "width=device-width, initial-scale=1.0" >
<meta http-equiv= "X-UA-Compatible" content= "ie=edge" >
<title>Document</title> </head> <body> <div class= "form-group" >
<label>å§åï¼</label> <span οndblclick= "edit(this)" >å¼ ä¸</span>
</div> <div class= "form-group" >
<label>个人ä»ç»ï¼</label> <span οndblclick= "edit(this)" >æå°±æ¯æï¼é¢è²ä¸ä¸æ ·ççç«ï¼</span>
</div> <script> function edit (element) {
// è·åè¦ç¼è¾çææ¬å
容 var oldHtml = element.innerHTML;
// å建ä¸ä¸ªæ°ç input è¾å
¥æ¡ var newInput = document.createElement( 'input' );
// 为æ°ç inputæ·»å 屿§ newInput.type = "text" ;
newInput.value = oldHtml; // æ¸
空å½åå
ç´ çææ¬å
容 element.innerHTML = '' ;
// ææ°ç input æ¡ è¿½å å°å½åå
ç´ èç¹ä¸ element.appendChild(newInput); // è®¾ç½®éæ©ææ¬çå
容æè®¾ç½®å
æ ä½ç½®ï¼ä¸¤ä¸ªåæ°ï¼start,endï¼start为å¼å§ä½ç½®ï¼endä¸ºç»æä½ç½®ï¼å¦æå¼å§ä½ç½®åç»æä½ç½®ç¸ååå°±æ¯å
æ ä½ç½®ï¼ newInput.setSelectionRange(0, oldHtml.length) // ä¸ºæ° input æ¡è·åç¦ç¹ newInput.focus(); // 为æ°ç input æ·»å 失å»ç¦ç¹äºä»¶ newInput.onblur = function () {
// 夿失å»ç¦ç¹æ¶ï¼input æ¡ç弿¯å¦ä¸åå¼ç¸åï¼ç¸åå表示没æä¿®æ¹ï¼è¿ååå¼ï¼ä¸ååè¡¨ç¤ºææ¹å¨ï¼è¿åæ°å¼ element.innerHTML = this .value == oldHtml? oldHtml : this .value;
} } </script> </body> </html> |
ææï¼
VUE å®ç°åå»ç¼è¾
代ç ï¼
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
57
58
59
60
61
62
63
64
65
66
67
68
|
< template >
< div >
< div class = "table-responsive" >
< table class = "table table-bordered" >
< thead >
< tr >
< th >å§å</ th >
< th >æ§å«</ th >
</ tr >
</ thead >
< tbody >
< tr v-for = "item in list" >
< td >
< span v-if = "!editing" @ dblclick = "edit" >`item`.`wenzi`</ span >
< input type = "text"
class = "form-control"
ref = "input"
v-if = "editing"
:value = "item.wenzi"
v-model = "item.wenzi"
@ blur = "save" >
</ td >
< td >
< span v-if = "!editing" @ dblclick = "edit" >`item`.`gender`</ span >
< input type = "text"
class = "form-control"
ref = "input"
v-if = "editing"
:value = "item.gender"
v-model = "item.gender"
@ blur = "save" >
</ td >
</ tr >
</ tbody >
</ table >
</ div >
</ div >
</ template >
< script type = "text/ecmascript-6" >
export default { data: function () { return { editing: false, list: [ {wenzi: '迪çåå·´', gender: '女æ§'}, {wenzi: '鹿æ', gender: 'ç·æ§'}, ], } }, methods: { edit: function () { this.editing = true this.$nextTick(function () { this.$els.input.focus() }) }, save: function () { this.editing = false } } } </ script >
< style lang = "scss" rel = "stylesheet/scss" scoped>
</ style >
|
ææï¼
å½ç¶ï¼è¿ç§ææå¨å®é åºç¨ä¸å¯è½ä¸å¤ªåå¥½ï¼æä»¬ä¹å¯ä»¥ç¨æé®æ¥æ§å¶
æ¬æè½¬èª frwupeng517 51CTOå客ï¼åæé¾æ¥:http://blog.51cto.com/dapengtalk/1949914