【问题标题】:How to write a custom / generic validation for the input fields using vee-validation in vuejs2如何在 vuejs2 中使用 vee-validation 为输入字段编写自定义/通用验证
【发布时间】:2018-05-02 06:43:03
【问题描述】:

下面是我的代码。在那,名字,姓氏,中间名输入 字段在那里。我想使用一个单一的方法来抛出一个错误 那些领域。我只能在 validator.extend 函数。 例如:Validator.extend('firstName', {});。 但我想通过 Validator.extend('firstName','lastName', 'middleName', {});( 或 )Validator.extend('fieldNames', {});像这样。 请帮忙。

<template>
 <b-card>
    <h4 slot="header" class="card-title">Employee</h4>
        <b-row>
            <b-col sm="3">
              <b-form-group>
                <label for="name">First Name </label>
                <input type="text" id="name"  class="form-control" placeholder="Enter your name" v-validate="'required|firstName'" name="firstName">
                        <span v-show="errors.has('firstName')" class="is-danger">{{ errors.first('firstName') }}</span>
               </b-form-group>
            </b-col>
             <b-col sm="3">
              <b-form-group>
                <label for="name">Last Name </label>
                <input type="text" id="name"  class="form-control" placeholder="Enter your middle name" v-validate="'required|lastName'" name="lastName">
                        <span v-show="errors.has('lastName')" class="help is-danger">{{ errors.first('lastName') }}</span>
              </b-form-group>
            </b-col>
             <b-col sm="3">
              <b-form-group>
                <label for="name">Middle Name </label>
                <b-form-input type="text" id="name" placeholder="Enter your name"></b-form-input>
              </b-form-group>
            </b-col>
          </b-row>

          <b-row>
            <b-col sm="3">
              <b-form-group>
                <label for="name">Employee ID</label>
                <b-form-input type="text" id="name" placeholder="ID"></b-form-input>
              </b-form-group>
            </b-col>
             <b-col sm="3">
              <b-form-group>
                <label for="name">Gender</label>
                <b-form-input type="text" id="name" placeholder="Gender"></b-form-input>
              </b-form-group>
            </b-col>
             <b-col sm="3">
              <b-form-group>
                <label for="name">Nationality</label>
                <b-form-input type="text" id="name" placeholder="Nationality"></b-form-input>
              </b-form-group>
            </b-col>
          </b-row>
         <input type="submit" value="Submit" @click="validateForm">
 </b-card>
</template>

<script>

import Vue from 'vue'
import VeeValidate from 'vee-validate';
import { Validator } from 'vee-validate';
Vue.use(VeeValidate);

export default {
  name: 'addEmpl',

   created: function() {
    Validator.extend('firstName', {
    getMessage: field => 'Enter valid first name',
    validate: value => /^[a-zA-Z]*$/.test(value)
});
   },
   methods: {
    validateForm() {
        this.$validator.validateAll();
    }
   }
}
</script>

<style lang="scss" scoped>
.is-danger{
  color:  RED;
}
</style>

【问题讨论】:

    标签: vue.js vuejs2 vee-validate


    【解决方案1】:

    您可以将对象传递给您的自定义验证(甚至在方法中返回它):

    <input placeholder="Enter your name" v-validate="validations('firstName')">
    
    created() {
      Validator.extend('fieldName', {
        getMessage(field, val) {
          return `Enter valid ${val}`
        },
        validate(value, field) {
          if (field == 'firstName') { return /^[a-zA-Z]*$/.test(value) }
          else if (field == 'lastName') { return  /^[a-z]*$/.test(value) }
          // and so on
        }
      })
    },
    methods: {
      validations(field) {
        return { required: true, fieldName: field }
      }
    }
    

    【讨论】:

    • 以上代码运行良好。请帮我解决这个link中的问题
    猜你喜欢
    • 2019-04-27
    • 2019-09-06
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2021-11-17
    相关资源
    最近更新 更多