我需要进行表单验证。
- 创建任务时,至少 10 个字符。红色边框。
- 正确时为绿色
- 并且在输入正确的值之前,该按钮不会处于活动状态。
Vue.component('task-element',{
props: [ 'task' ],
data : function () {
var d = {seconds_elapsed: null};
return d;
},
methods: {
timer() {
this.seconds_elapsed = (Date.now() - this.task.startTime) / 1000 | 0;
setTimeout(this.timer, 1000);
}
},
created() {
if (!this.task.startTime)
this.$set(this.task, 'startTime', Date.now());
this.timer();
},
template : `
<li>
<label :class="{ islong: task.text.length >= 15 }">
<input type="checkbox" v-model="done">
<span>{{ task.text }}</span>
<small>{{ seconds_elapsed }} seconds ago</small>
</label>
<button v-if="task.done" @click="$emit('delete')">delete</button>
</li>`,
computed: {
done: {
get() {
return this.task.done;
},
set(done) {
this.$emit('update', { done });
},
},
},
});
new Vue({
el: '#app',
data: {
newTodo: '',
todos: [
{ id: 1, text: 'Task 1', done: false },
{ id: 2, text: 'Task 2', done: false },
{ id: 3, text: 'Task 3', done: true },
],
data_is_loaded: true,
},
methods: {
addTodo() {
if(this.newTodo.length > 10) {
const text = this.newTodo;
if (text.length) {
this.todos.push({
id: 1 + Math.max(0, ...this.todos.map(n => n.id)),
text,
done: false,
});
this.newTodo = '';
} else {
alert('empty');
}
}},
},
});
至于高亮输入的边框,你需要绑定样式或将写入相应样式的类,所有这些也可以与计算(计算)属性相关联:
您需要将 disabled 属性绑定到按钮:
在样式中,您可以通过伪类规定非活动模式下按钮所需的样式: