iview表单校验之select

497 阅读1分钟

select组件在选择时,默认是取value值,文本展示为label,在做表单校验时,发现select校验失效

html部分
<Form ref="formValidate" :model="formValidate" :rules="ruleValidate">
    <FormItem label="负责人" prop="person">
         <Select v-model="formValidate['person']">
            <Option v-for="user in userList" :key="user.id" :value="user.userid">{{user.name}}</Option>
        </Select>
    </FormItem>
</Form>

js部分
ruleValidate: {
    person: [
        { required: true, message: 'Please select the person', trigger: 'change' }
    ]
}

后来看官方文档发现,传送门

Type
Indicates the type of validator to use. Recognised type values are:
. string: Must be of type string. This is the default type.
. number: Must be of type number.
. boolean: Must be of type boolean.
. method: Must be of type function.
. regexp: Must be an instance of RegExp or a string that does not generate an exception when creating a new RegExp.
. integer: Must be of type number and an integer.
. float: Must be of type number and a floating point number.
. array: Must be an array as determined by Array.isArray.
. object: Must be of type object and not Array.isArray.
. enum: Value must exist in the enum.
. date: Value must be valid as determined by Dateurl: Must be of type url.
. hex: Must be of type hex.email: Must be of type email.
. any: Can be any type.

type的默认类型是字符串类型,而我们的项目value拿到的是Number类型

解决办法:

1、value赋值转换为string类型

2、表单的校验规则增加Number类型

rulePERSON: [        
   {
      type: 'number',
      required: true,
      message: '项目负责人不能为空',
      trigger: 'change'
    }
]