Vee-validate结合VueSimpleSuggest页面加载即显错误问题求助
解决Vee-validate结合VueSimpleSuggest页面加载即显示错误提示的问题
出现这个问题的核心原因是VueSimpleSuggest组件在初始化阶段会对绑定的v-model值进行内部处理(比如你的代码里用了v-model.trim,组件自身也可能有值格式化逻辑),导致Vee-validate检测到值的变更,提前触发了必填规则的验证。
你可以通过以下几种方式解决:
1. 使用lazy延迟验证触发
给ValidationProvider添加lazy属性,让验证只在用户交互(输入、失焦、提交)后才执行,避免页面加载时自动验证:
<ValidationProvider name="enteredFrom" rules="required" v-slot="{ errors }" lazy > <div class="form-group form-group--zindex" v-click-outside="onClickOutsideFrom" > <label for="enteredFrom" class="form-label" >Введіть станцію відправлення</label > <vue-simple-suggest type="text" name="enteredFrom" v-model.trim="group.enteredFrom" placeholder="Станція відправлення" :list="simpleSuggestionList" :filter-by-query="true" :styles="autoCompleteStyle" @focus="showStationFrom" @show-list="hideStationFrom" autocomplete="off" > </vue-simple-suggest> <span>{{ errors[0] }}</span> </div> </ValidationProvider>
2. 指定initial-value同步初始状态
通过initial-value属性将Vee-validate的初始值与v-model的初始值绑定,避免组件初始化时的状态差异触发验证:
<ValidationProvider name="enteredFrom" rules="required" v-slot="{ errors }" :initial-value="group.enteredFrom" > <!-- 其余代码不变 --> </ValidationProvider>
3. 手动控制验证时机
如果需要更精细的控制,可以通过ValidationProvider提供的validate方法,在表单提交或特定用户操作时才触发验证:
<ValidationProvider name="enteredFrom" rules="required" v-slot="{ errors, validate }" > <!-- 组件内容 --> <button @click="validate">提交验证</button> </ValidationProvider>
优先级最高的是第一种方案,lazy属性是Vee-validate专门用来延迟初始验证的配置,最贴合你的场景。
内容的提问来源于stack exchange,提问作者Maks Porvatov
相关产品推荐
相关产品推荐

