Rak*_*ali 5 javascript vue.js vee-validate
我正在使用 vee validate 进行表单验证。我正在使用 vue 转换来显示这样的验证错误:
<input type="text" name="name" v-validate="'required'">
<transition name="slide-fade">
<div v-show="errors.has('name')">{{ errors.first('name') }}</div>
</transition>
Run Code Online (Sandbox Code Playgroud)
css:
.slide-fade-enter-active {
transition: all .3s ease;
}
.slide-fade-leave-active {
transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to
/* .slide-fade-leave-active below version 2.1.8 */ {
transform: translateX(10px);
opacity: 0;
}
Run Code Online (Sandbox Code Playgroud)
现在,当出现错误时,过渡有效,但当错误消失时,过渡不起作用。为什么会这样?
过渡正在发挥作用。你会突然看到它一片空白,因为没有东西errors.first('name')可以显示了。
当你添加一些其他字符串时errors.first('name'),比如说Error:,它就变得清晰了。
Vue.use(VeeValidate);
new Vue({
el: '#demo'
})Run Code Online (Sandbox Code Playgroud)
.slide-fade-enter-active {
transition: all .3s ease;
}
.slide-fade-leave-active {
transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to
/* .slide-fade-leave-active below version 2.1.8 */ {
transform: translateX(10px);
opacity: 0;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>
<div id="demo">
Type something and then erase. And then type again.
<input type="text" name="name" v-validate="'required'">
<transition name="slide-fade">
<div v-show="errors.has('name')">Errors: {{ errors.first('name') }}</div>
</transition>
</div>Run Code Online (Sandbox Code Playgroud)
考虑额外代码的数量,但如果您确实必须这样做,则必须向的值添加一个监视,并在发生第一个错误时记录它。input
vee-validate 不提供错误侦听器,因此这已经是目前最好的了。请参阅下面的演示。
Vue.use(VeeValidate);
new Vue({
el: '#demo',
data: {
name: "Erase me",
nameError: ""
},
watch: {
name() {
// two ticks at least, because vee-validate takes one tick to validate
Vue.nextTick().then(Vue.nextTick()).then(() => {
if (this.errors.has('name')) { this.nameError = this.errors.first('name'); }
});
}
}
})Run Code Online (Sandbox Code Playgroud)
.slide-fade-enter-active {
transition: all .3s ease;
}
.slide-fade-leave-active {
transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to
/* .slide-fade-leave-active below version 2.1.8 */ {
transform: translateX(10px);
opacity: 0;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue"></script>
<script src="https://cdn.jsdelivr.net/npm/vee-validate@latest/dist/vee-validate.js"></script>
<div id="demo">
Erase and error will appear. Type again and error will leave.<br>
<input type="text" name="name" v-validate="'required'" v-model="name">
<transition name="slide-fade">
<div v-show="errors.has('name')">Errors: {{ nameError }}</div>
</transition>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5839 次 |
| 最近记录: |