Antd版本:3.X
简略还原某一项任务:
部分代码如下:
// 其中一个输入框 <FormItem label="min Price(大于)" labelCol={{ span: 10 }} wrapperCol={{ span: 14 }}> {getFieldDecorator('maxPrice', { rules: [ { required: true, message: '不能为空', }, { validator: this.validatorMax } ] })( <Input size="small" /> )} </FormItem> // 自定义验证 validatorMax = (rule, value, callback) => { if (!this.state.curInputMin) { callback('请先输入最小值') } if (this.props.dataList1.length !== 0) { //如果输入的最小值大于最后一项的最大值 if (this.state.curSectionIndex + 1 === this.props.dataList1.length && parseInt(value) <= parseInt(this.state.curInputMin)) { callback('请输入大于' + this.state.curInputMin + '的值') } if (parseInt(value) <= parseInt(this.state.curInputMin) ||(parseInt(value) > parseInt(this.props.dataList1[this.state.curSectionIndex+1 ].minPrice)) ) { callback('请输入' + this.state.curInputMin + '~' + this.props.dataList1[this.state.curSectionIndex + 1].minPrice + '内的值') } callback() } callback() }问题来了,提交表单之后,form.validateFields回调函数一直没有被执行
// 提交表单 confirm=()=>{ this.props.form.validateFileds((err,val)=>{ coneole.log(val) ... )检查了好久,控制台也没有报错。。。终于,在打印this.props.dataList1[this.state.curSectionIndex+1 ]的时候发现出现了值为空的情况,卡在了判断语句里,所以一直没有执行callback()跳出
在判断语句里加个且该值不为空的条件
1 在自定义校验callback必须被调用 2 callback(‘xxx’) 表示校验未通过、callback() 表示校验通过