1 单个正整数输入
1.1 模板
< el-form
ref = " 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-form
ref = " formRef"
:model = " formData"
:rules = " formRules"
label-width = " 150px"
>
< el-form-item label = " 属性范围" prop = " propRange" >
< div class = " input-wrapper" >
< el-input
v-model.number = " formData.propName1"
placeholder = " 请输入一个正整数"
/>
< span style = " margin : 0 10px" > -</ span>
< el-input
v-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;
}