ElementUI version
1.0.0-rc.7
OS/Browers version
macOS/Chrome 53
Vue version
2.0.3
示例代码
<template>
<div class="vue-container">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="活动区域" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-select v-model="ruleForm.gender" placeholder="请选择性别">
<el-option :label="item.title" :value="item.value" v-for="item in genders"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click.native.prevent="handleSubmit">立即创建</el-button>
<el-button @click.native.prevent="handleReset">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data () {
return {
genders: [{title: '男人', value: 1}, {title: '女人', value: 2}],
ruleForm: {
region: '',
gender: ''
},
rules: {
region: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
gender: [
{ required: true, message: '请选择性别', trigger: 'change' }
]
}
}
},
components: {
},
methods: {
handleReset () {
this.$refs.ruleForm.resetFields()
},
handleSubmit (ev) {
console.log(this.ruleForm)
this.$refs.ruleForm.validate((valid) => {
if (valid) {
console.log('submit!')
} else {
console.log('error submit!!')
return false
}
})
}
}
}
</script>
log结果
结果:
我的提交的form表单里,gender=2, region='shanghai'。
但是在性别一栏,我表单验证的时候,还是提示请选择性别。
也就是我通过两个选择器,region选择器是确定的值的时候,表单验证是能够通过的,如同demo中所示;
但我若通过动态绑定value,也就是:value绑定值时,则表单验证不会通过。
看了一下,和 value
的绑定方式无关。由于 Form
的校验内置了 async-validator,而它会给每个字段加一个默认的值为 string
的 type
规则,即默认情况下字段必须是字符串型。
你的例子里 genders
的值是数字,所以验证失败了。所以要么显式地给 rules
的 gender
里加上 type: 'number'
,要么把 genders
的值改为 '1'
和 '2'
,要么使用 Element 文档里的「自定义校验规则」。
@Leopoldthecoder 是的,嗯,谢谢。
多选的如何去验证? type= 'array' ? 实验了下貌似真是
ElementUI 给select和checkbox这种value为int值得时候校验做个转换吧
Most helpful comment
看了一下,和
value
的绑定方式无关。由于Form
的校验内置了 async-validator,而它会给每个字段加一个默认的值为string
的type
规则,即默认情况下字段必须是字符串型。你的例子里
genders
的值是数字,所以验证失败了。所以要么显式地给rules
的gender
里加上type: 'number'
,要么把genders
的值改为'1'
和'2'
,要么使用 Element 文档里的「自定义校验规则」。