我正在构建一个在同一页面上具有多种表单的Web应用程序,因此scoped validation from VeeValidate似乎是一个显而易见的选择,但我无法使其正常运行。
无论我做什么,模型始终有效。我建立了一个小例子来帮助您https://jsfiddle.net/pvkovalev/3vwp9zdo/
这是我的HTML代码:
<div id="app">
<div data-vv-scope="InformationStep1">
<input v-model="input1" v-validate="{required: true}" />
</div>
<div data-vv-scope="InformationStep2">
<input v-model="input2" v-validate="{required: false}" />
</div>
<input type="button" @click="validate" value="validate" />
</div>
和JS:
Vue.use(VeeValidate)
new Vue({
el: "#app",
data: {
input1: undefined,
input2: 'not required'
},
methods: {
validate: function (){
this.$validator.validateAll('InformationStep1').then((result) => {
alert('InformationStep1 valid: '+ JSON.stringify(result))
})
this.$validator.validateAll('InformationStep2').then((result) => {
alert('InformationStep2 valid: '+ JSON.stringify(result))
})
}
}
})
我在这里想念什么?也许,显而易见。任何帮助表示赞赏!
答案 0 :(得分:1)
我找到了!
好的,因此解决方案是使用 form标签,而不是 div 标签。更改后,它就像是一种魅力。
这是一个新代码:
<div id="app">
<form data-vv-scope="InformationStep1">
<input v-model="input1" v-validate="{required: false}" />
</form>
<form data-vv-scope="InformationStep2">
<input v-model="input2" v-validate="{required: true}" />
</form>
<input type="button" @click="validate" value="validate" />
</div>