Element: 当Select通过:value绑定时,与表单validate验证无法通过

Created on 27 Oct 2016  ·  5Comments  ·  Source: ElemeFE/element

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结果
qq20161027-0 2x

结果:
我的提交的form表单里,gender=2, region='shanghai'。
但是在性别一栏,我表单验证的时候,还是提示请选择性别。

也就是我通过两个选择器,region选择器是确定的值的时候,表单验证是能够通过的,如同demo中所示;
但我若通过动态绑定value,也就是:value绑定值时,则表单验证不会通过。

question

Most helpful comment

看了一下,和 value 的绑定方式无关。由于 Form 的校验内置了 async-validator,而它会给每个字段加一个默认的值为 stringtype 规则,即默认情况下字段必须是字符串型。

你的例子里 genders 的值是数字,所以验证失败了。所以要么显式地给 rulesgender 里加上 type: 'number',要么把 genders 的值改为 '1''2',要么使用 Element 文档里的「自定义校验规则」。

All 5 comments

代码不知道为什么,贴上来显示不出来,我上传附件吧

qq20161027-1 2x

News.txt

看了一下,和 value 的绑定方式无关。由于 Form 的校验内置了 async-validator,而它会给每个字段加一个默认的值为 stringtype 规则,即默认情况下字段必须是字符串型。

你的例子里 genders 的值是数字,所以验证失败了。所以要么显式地给 rulesgender 里加上 type: 'number',要么把 genders 的值改为 '1''2',要么使用 Element 文档里的「自定义校验规则」。

@Leopoldthecoder 是的,嗯,谢谢。

多选的如何去验证? type= 'array' ? 实验了下貌似真是

ElementUI 给select和checkbox这种value为int值得时候校验做个转换吧

Was this page helpful?
0 / 5 - 0 ratings