2016-12-24 146 views
2

我有一个问题,当我将鼠标指针放到文本框中,然后删除焦点时,它显示验证错误。我想要实现的是用户只需提交表单或按提交按钮即可进行验证的时间。提交Redux表单验证

这里是我到目前为止的代码:

const form = reduxForm({ 
    form: 'BoardAddModalForm', 
    validate 
}); 

const renderField = field => (
    <div className="form-group"> 
     <input className={[forms.inputTextboxMd,"form-control"].join(' ')} {...field.input} type={field.type} placeholder={field.placeholder} autoComplete="off" /> 
     <div className={utils.errorText}>{field.meta.touched && field.meta.error && <span>{field.meta.error}</span>}</div> 
    </div> 
); 

function validate(formProps){ 
    const errors = {}; 

    if(!formProps.name){ 
     errors.name = "Board name is required"; 
    } 

    return errors; 
} 
class BoardAddModal extends React.Component { 

    constructor(props) { 
     super(props); 
     this.state = { 
      name: '' 
     }; 
    } 

    addBoard(formProps) { 
     this.props.dispatch(reset('BoardAddModalForm')); 
    } 

    render() { 

     const { error, handleSubmit } = this.props; 
     return (
     <Modal show={this.props.show} onHide={this.props.onHide} bsSize="small" aria-labelledby="contained-modal-title-sm"> 
      <Modal.Header closeButton> 
       <Modal.Title id="contained-modal-title-sm">Create Board</Modal.Title> 
      </Modal.Header> 
      <Modal.Body> 
       <form onSubmit={handleSubmit(this.addBoard.bind(this))}> 

        <Field name="name" component={renderField} type="text" placeholder="What are you organizing" /> 
        <button className="btn">Submit</button> 
       </form> 

      </Modal.Body> 
     </Modal> 
     ); 
    } 
} 

export default (form(BoardAddModal)); 

回答

3

设置touchOnBlur选项false(默认情况下它是true):

const form = reduxForm({ 
    form: 'BoardAddModalForm', 
    touchOnBlur: false 
    validate 
}); 

Docs

+0

我看,似乎无法找到这在redux-form的文档上。你在哪里找到它的链接? –

+1

现在看到它。谢啦! –

+0

如果确实有帮助,请将它标记为已接受的答案:) – gustavohenke