Űrlap példa
Forrás:
<template>
<div id="app">
<table v-if="mode">
<tr>
<td>E-mail cím:</td>
<td>
<input placeholder="E-mail cím" v-model="o.email">
</td>
</tr>
<tr>
<td>Neve:</td>
<td>
<input placeholder="Név" v-model="o.name">
</td>
</tr>
<tr>
<td>Született:</td>
<td>
<input type="date" v-model="o.i1">
</td>
</tr>
<tr>
<td>Neme:</td>
<td>
<input name="x" type="radio" value="Férfi" v-model="o.i2">
<input name="x" type="radio" value="Nő" v-model="o.i2">
</td>
</tr>
<tr>
<td>Kedvenc színe:</td>
<td>
<input type="color" v-model="o.ksz">
</td>
</tr>
<tr>
<td colspan="2" class="c">
<button @click="f()" :disabled="!(o.email && o.i1 && o.name && o.i2)">Ment</button>
<button @click="o={},mode=0">Mégse</button>
</td>
</tr>
</table>
<table v-if="!mode">
<tr v-for="(sor,i) in Array.from(t)" :key="sor.email">
<td>{{ i+1 }}.</td>
<td :style="'color: '+sor[1].ksz">{{ sor[0] }}</td>
<td :style="'background-color: '+sor[1].ksz">{{ sor[1].name }}</td>
<td>{{ sor[1].i1 }}</td>
<td class="c">{{ sor[1].i2 }}</td>
<td class="katt c" @click="o=t.get(sor[0]),mode=2">✏</td>
<td class="katt c" @click="torol(sor[0])">⨯</td>
</tr>
<tr>
<td colspan="7"
class="c">
<button @click="mode=1">Új elem</button>
</td>
</tr>
</table>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
o: {},
t: new Map(),
mode: 0
};
},
mounted(){
var ldb = localStorage.getItem('db')
if (ldb) {
this.t = new Map()
JSON.parse( ldb ).forEach( v => {
this.t.set(v[0],v[1])
})
}
},
methods: {
torol(mit) {
this.t.delete(mit)
this.$forceUpdate()
localStorage.setItem('db',JSON.stringify(Array.from(this.t)))
},
f() {
if (this.mode===1) {
if (this.t.has(this.o.email)) {
alert("van már ilyen e-mail cím");
} else {
this.t.set(this.o.email, this.o);
this.o = {};
//this.$forceUpdate();
this.mode=0
}
} else {
this.t.set(this.o.email, this.o);
this.o = {};
this.mode=0
}
localStorage.setItem('db',JSON.stringify(Array.from(this.t)))
}
}
};
</script>
<style>
td.katt {
cursor: pointer;
}
td.katt:hover {
text-shadow:1px 1px 3px black;
color:red;
}
td.c {
text-align: center;
}
</style>
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117