[ElemeFE/element]选择框el-select的内容如果用v-for遍历后,有种情况导致它无法正常验证

2024-08-13 924 views
3
<el-select v-model="form.roleId" placeholder="請選擇角色" >
                    <el-option
                        v-for="item in roles"
                        v-bind:label="item.NameZhtw" 
                        v-bind:value="item.Id">
                    </el-option>
                </el-select>

如果 roles的格式如下:[ { Id : 1, NameZhtw : "name1" } , { Id : 2, NameZhtw : "name2" } ] 这样就不能正常的验证, 必须是[ { Id : “1”, NameZhtw : "name1" } , { Id : “2”, NameZhtw : "name2" } ] ,Id的值必须是字符串才可以正常验证

如果是是第一种情况,可以在控制台报个错也行,找问题找了好久。。。 还有那个单选按钮的值,直接用true或者false都不能绑定值,必须要转换成字符串才能正常绑定值,但是控制台也没有提醒

回答

6

rules 的type默认是字符型, 另外验证的提示, 只是不要用了产品模式, 控制台都会抛出

async-validator: ["tradeNum is required"]
async-validator: ["amount is required"]

类似上面的错误

1

保证form.roleId的类型和item.Id的类型一致, 不要一边是数值型, 一边字符型

8

form.roleId = 1 这样默认为数值型1, 验证还是有问题

2

你的validator的rules规则怎么写的.?

8

@lincenying 谢谢你

html里这样调的: <el-form ref="form" :rules="rules" :model="form">

data里这样写的: rules: { roleId: [{ required: true, message: '請選擇角色', trigger: 'change' }] },

9

http://jsfiddle.net/tLbsztmn/2/

看这个链接,点击下拉选择项时,下拉框下方会显示出错误提示,帮我看看是不是我代码写的有问题,谢谢你

7

@maxwellwei1 因为你的IdNumber 类型,默认验证的typestring。所以验证规则需要加上 type: 'number'

rules: {
  roleId: [{ required: true, message: '請選擇角色', trigger: 'change', type: 'number' }]
},
4

还是因为你的 Id 是数字类型的,而校验规则的 type 字段默认是 string。手动把 type 改成 number 就好:http://jsfiddle.net/tLbsztmn/3/

7

醉了,我在子组件里也出来一样问题,加上type='number'也不行

6

@VaJoy 请问这个问题最后怎么解决的? 我也遇到了 T_T