gpt4 book ai didi

javascript - 使用 Vee-Validate 和 vue js 2 在提交时验证子输入组件

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:00 24 4
gpt4 key购买 nike

我目前正在尝试创建一个包含多个“输入字段”组件的注册表单,这些组件都需要在按下提交后进行验证。当其中的文本发生更改时,它们目前都会自行验证,但我发现很难对所有输入字段进行全局调用以验证所有输入字段。我想要实现的目标如下:http://vee-validate.logaretm.com/examples#validate-form

是的,这个问题更简单了 Validate child input components on submit with Vee-Validate但是我不明白

我有 singleInput.vue

<template lang="html">
<div :class="'col m'+col">
<div class="input-field">
<i v-if="icon" class="material-icons prefix">{{icon}}</i>
<input
v-if="area"
:type="type"
@input="onChange"
:id="id"
:required="required"
:name="id"
v-validate="'required'"
/>
<textarea
v-if="!area"
@input="onChange"
:id="id"
:required="required"
:name="id"
class="materialize-textarea"></textarea>
<label :for="id">
{{label}}
<span v-if="required" class="red-text">*</span>

</label>
<span class="red-text error">{{$store.state.errors[id]}}</span>
</div>
</div>
</template>

<script>

export default {
name:'single-input',
props: {
col:{
type: Number,
default:6
},
id:{
type: String,
required:true
},
required:{
type:Boolean,
default: true
},
label:{
type:String,
required:true
},
onChange:{
type:Function,
required:true
},
area:{
type: Boolean,
default: true
},
type:{
type: String,
default: "text"
},
icon:{
type:String
},
validation:{

type:String
}
}
}
</script>

<style lang="css">

</style>

和 Info.vue

<template lang="html">
<div class="row">
<single-input v-for="(info,i) in informations" :id="info.id" :label="info.label" :onChange="onChange" :area="info.area" :key="i" :required="info.required" :col="info.col" :type="info.type" :icon="info.icon"></single-input>

</div>
</template>

<script>
import SingleInput from "./SingleInput";
export default {
name: 'info',
methods:{

onChange(e){

}
},
data(){
return{
informations:[
{
label: "First Name",
id: "fname",
icon: "person"
},
{
label: "Last Name",
id: "lname",
required:false,
icon: "person"
},
{
label: "Email",
id: "email",
type:"email",
icon:'email'
},
{
label: "Telephone",
id: "phone",
type:"text",
icon:'phone'
},
{
label: "Department",
id: "depa",
type:"text",
icon:'domain'
},
{
label: "Organization",
id: "org",
type:"text",
icon:'account_balance'
},
{
label: "Address",
id: "address",
icon:'directions',
area: false,
col:12
},
{
label: "City",
id: "city",
type:"text",
icon:'place'
},
{
label: "Post code",
id: "post",
type:"text",
icon:'pin_drop'
}

]
}
},
components:{
SingleInput
}
}
</script>

<style lang="css">
</style>

我尽我所能但无法访问 info.vue 中的错误

如有任何帮助,我们将不胜感激!

最佳答案

在您的示例中我看不到任何验证尝试,但这是我在 jsfiddle 中的工作示例:link

我做了什么: -在信息组件中添加提交方法

submit: function(){
var validationArray = this.$children.map(function(child){
return child.$validator.validateAll();
});

window.Promise.all(validationArray).then((v) => {
alert('From Submitted!');
}).catch(() => {
alert('Correct them errors!');
});
}

此方法基本上验证您信息的所有子项(在本例中为单输入)。

-更改了带有错误消息的 span 的位模板:

{{ ($validator.getErrors().errors.length > 0) ? $validator.getErrors().errors[0].msg : '' }}

编辑:我只能猜测你的代码出了什么问题,但我相信你的问题是你必须访问带有输入的组件下的“直接”验证器 - 单输入,而不是信息组件。

关于javascript - 使用 Vee-Validate 和 vue js 2 在提交时验证子输入组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43311564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com