2016-09-01 19 views
3

我和形式由多頁的工作,我要解決的驗證。終極版形式 - 如何設置字段感動

當我打提交按鈕的所有字段本網頁上顯示的錯誤消息下方,但如果我更改頁面,然後我需要打因爲觸及這些領域並沒有設置再次提交。如果我能,例如設置爲感動,一旦表單標誌anyTouched: true網頁上的所有字段

我的問題將得到解決。

我使用redux-form: '^6.0.0-rc.4'和我有一個容器,其中我包括Redux的形式和由字段的多個組件。

回答

5

我應該更好看:

Redux的形式返回touch當做道具的組件。該函數的參數字段的名字,所以我在componentWillUpdate檢查時submitFailed將改變,然後我會觸摸無效的所有領域。

componentWillUpdate(nextProps) { 
    const { 
     formName: { syncErrors }, 
     submitFailed, 
     touch 
    } = this.props 

    if (submitFailed !== nextProps.submitFailed) { 
     const toTouch = [] 

     for (const key in syncErrors) { 
     syncErrors.hasOwnProperty(key) && toTouch.push(key) 
     } 
     touch(...toTouch) 
    } 
    } 
1

我認爲你的問題是圍繞相反的方式,但在任何情況下,這裏的土地和我一樣在尋找一種方式有anyTouched集形式的任何領域被觸摸後...

在終極版型V6你必須明確地選擇要與表單級配置touchOnChangetouchOnBlur行爲 - see the docs here - 默認情況下沒有任何配置,因此沒有任何反應。

const Form = reduxForm({ 
    form: 'my-form', 
    touchOnChange: true, 
    touchOnBlur: true 
})(...) 

這些標誌讓這個任何字段被標記爲感動(因此anyTouched表格上標明true)時,該字段的onChangeonBlur處理器被分別稱爲。