1 单个正整数输入
1.1 模板
<el-formref="formRef":model="formData":rules="formRules"label-width="150px"
><el-form-item label="属性中文名" prop="propName"><el-input v-model.number="formData.propName" placeholder="请输入一个正整数" /></el-form-item>
</el-form>
1.2 校验规则
import { reactive, ref } from 'vue'
const formRef = ref(null)
const formData = reactive({propName: ''
})
const positiveNumValidator = (propName = '属性') => {return (rule, value, callback) => {if (value === '') {callback(new Error(`${propName}不能为空`))} else {if (!/^[1-9]\d*$/.test(value)) {callback(new Error(`${propName}是一个正整数`))} else {callback()}}}
}
const formRules = reactive({propName: [{ required: true,trigger: 'blur',validator: positiveNumValidator('propName')}]
})
2 两个正整数输入(联动)
2.1 模板
<el-formref="formRef":model="formData":rules="formRules"label-width="150px"
><el-form-item label="属性范围" prop="propRange"><div class="input-wrapper"><el-inputv-model.number="formData.propName1"placeholder="请输入一个正整数"/><span style="margin: 0 10px">-</span><el-inputv-model.number="formData.propName2"placeholder="请输入一个正整数"/></div></el-form-item>
</el-form>
2.2 校验规则
import { reactive, ref } from 'vue'
const formRef = ref(null)
const formData = reactive({propName1: '',propName2: ''
})
const timeRangeValidator = (start, end, propName = '时间范围') => {return (rule, value, callback) => {if (start === '' || end === '') {callback(new Error(`${propName}不能为空`))} else if (!/^[1-9]\d*$/.test(start) || !/^[1-9]\d*$/.test(end)) {callback(new Error(`${propName}必须是正整数`))} else if (start >= end) {callback(new Error('开始时间必须小于结束时间'))} else {callback()}}
}
const formRules = reactive({propRange: [{required: true,trigger: 'blur',validator: (rule, value, callback) => {const start = formData.propName1;const end = formData.propName2;const rangeValidator = timeRangeValidator(start, end)rangeValidator(rule, value, callback) }}]
})
2.3 CSS
.input-wrapper {display: flex;align-items: center;flex: 1;
}