详情请点阅读全文
问题:点提交按钮后执行validateFields()
验证成功,但不能执行if(!error){//验证成功}
内内容
分析及解决:
问题产生原因是: 使用了自定义验证函数validator:valiPrice
,它的每个分支必须执行callback()函数,否则将无法通过验证
【1】此处必须进行回调函数调用,否则【2】处将无法通过验证并执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| submit=()=>{ this.props.form.validateFields((error,values)=>{ if(!error){ alert('成功') console.log(values) }else{ alert('失败') console.log(values) } }) }
valiPrice=(rule, value, callback)=>{ if(value*1>0){ callback() }else{ callback('价格必须大于0') } }
<Item label='商品价格'> { getFieldDecorator('price',{ initialValue:'', rules:[ {required:true,message:'价格必须输入'}, {validator:this.valiPrice}, ] })(<Input type='number' placeholder='输入商品价格' addonAfter="元" />) } </Item>
<Item > <Button type='primary' onClick={this.submit}>提交</Button> </Item>
|
其它写法:直接把验证函数写在里面
【1】直接把验证函数写在内部,注意各情况必须回调
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <Item label='商品价格'> { getFieldDecorator('price',{ initialValue:'', rules:[ {required:true,message:'价格必须输入'}, {validator:(rule,value,callback)=>{ if(value*1>0){ callback() }else{ callback('价格必须大于0') } }}, ] })(<Input type='number' placeholder='输入商品价格' addonAfter="元" />) } </Item>
|