Javascript Vue/Vuetify-如何对每个芯片项而不是整个选择输入进行验证

Javascript Vue/Vuetify-如何对每个芯片项而不是整个选择输入进行验证,javascript,typescript,vue.js,vuetify.js,vee-validate,Javascript,Typescript,Vue.js,Vuetify.js,Vee Validate,有人知道如何对每个芯片项目进行验证(使用vee validate)吗 我有一段代码: <v-select class="elevation-0 mt-border-bottom" v-model="PhoneNumber" label="Add phone number" chips tags solo prepend-icon="phone" clearable :error-messages="errors.collect('Phone Number

有人知道如何对每个芯片项目进行验证(使用vee validate)吗

我有一段代码:

<v-select
  class="elevation-0 mt-border-bottom"
  v-model="PhoneNumber"
  label="Add phone number"
  chips
  tags
  solo
  prepend-icon="phone"
  clearable
  :error-messages="errors.collect('Phone Number')"
  v-validate="'required|numeric'"
  data-vv-name="Phone Number"
  required
>
    <template slot="selection" slot-scope="data">
        <v-chip
          close
          outline
          dark
          @input="remove(data.item)"
          :selected="data.selected"
        >
            <strong>{{ data.item }}</strong>
        </v-chip>
    </template>
</v-select>

<script>
    export default {
        data () {
            return {
                PhoneNumber: []
            }
        },
        methods: {
            async submitNewNumber () {
                await this.$validator.validateAll().then((isValid) => {
                    if (isValid) {
                        console.log('submitted')
                    } else {
                        return false
                    }
                })
            }
        }
    }
</script>

{{data.item}}
导出默认值{
数据(){
返回{
电话号码:[]
}
},
方法:{
异步submitNewNumber(){
等待此消息。$validator.validateAll()。然后((isValid)=>{
如果(有效){
console.log('submitted')
}否则{
返回错误
}
})
}
}
}
现在验证只在整个电话号码输入上进行。 我想知道我如何使它在每个芯片上工作,在这个输入设置最小值为9,最大值为15

Vuetify-芯片使用:

Vuetify-Vee验证:

Vee验证-验证规则:


谢谢

看来
v-chip
没有内置的验证功能。因此,我使用的是默认验证(不是vee验证)。这样,您就可以看到v-select的结果。然后可以循环查看结果并验证每个值

        inputRules = [
            (v: any) => {
                if (!v || v.length < 1)
                    return 'Input is required';
                else if (v.length > 0) {
                for (let i = 0; i < v.length; i++) {
                    if (v[i].length > 9)
                        return 'Invalid Number';
                }
            }
                else return true;
            }
        ];
inputRules=[
(v:任何)=>{
如果(!v | | v.长度<1)
返回“需要输入”;
否则如果(v.length>0){
for(设i=0;i9)
返回“无效号码”;
}
}
否则返回true;
}
];


{{data.item}}
试验
为此,我们必须

  • 将值验证为数组(因此分别检查每个项目)
  • 为自己定义vee验证规则
  • //ES6代码
    从“vee验证”导入{extend}
    从“验证器”导入{isEmail,isArray}
    //例如,检查每个芯片是否包含有效的电子邮件
    扩展(“chipUrlRule”,函数(val){
    如果(!isArray(val)| val.length<0){
    return“输入至少一封电子邮件”
    }
    for(设i=0;i
    <v-form ref="form" v-model="valid" lazy-validation>
            <v-select
                class="elevation-0 mt-border-bottom"
                v-model="phoneNumber"
                label="Add phone number"
                chips
                tags
                solo
                prepend-icon="phone"
                clearable
                data-vv-name="Phone Number"
                required
                :rules="inputRules"
            >
                <template slot="selection" slot-scope="data">
                    <v-chip
                        close
                        outline
                        dark
                        @input="remove(data.item)"
                        :selected="data.selected"
                    >
                        <strong>{{ data.item }}</strong>
                    </v-chip>
                </template>
            </v-select>
            <v-btn @click.native="submitNewNumber">Test</v-btn>
        </v-form>