问题一:
el-input标签内设置type=“number” ,中文输入法输入,在失去焦点时就会录入英文字符
问题二:
el-input标签内设置v-model.number=“form.name”,默认值为数值型字符串(例如后台动态返回数据),则rules校验会报错,如下图:
问题三:
如果是非必填的,可以为空,若不为空则需要校验输入类型为数字。
问题四:
使用.number修饰符或者使用Number()方法均会使得输入数字+字符,最终提交会自动转换成数字
解决办法
1、rules里面用type:‘number’ 校验数字类型
2、rules里面使用transform进行校验前的数据处理
3、isNaN() 进行数值型字符串的判断处理
<el-form-item
:label="list.key"
:key="list.key"
:prop="name"
:rules="[
{required: list.remark, message: '不能为空'},
{type: 'number', message: '请输入数字',transform} ]"
>
<el-input step='0.0001' v-model="list.name" clearable></el-input>
</el-form-item>
methods: {
transform(value) {
if (isNaN(value)) {
return value
}else {
return Number(value);
}
}
}