2017-05-30 61 views
0

問題是如果我可以通過輸入元素捕獲,如果他已經提交 沒有通過任何道具,因爲我不能改變代碼體系結構像設置 一個this.state或創建另一個文件管理這個,這就是爲什麼我需要輸入 自己認識到他已經提交,所以他可以運行它自己的字段的verifyField方法來添加類hasError並顯示CSS。輸入檢測表單提交使用反應

我有一個之情況,其中i有3個文件,形狀group.js僅呈現輸入 html元素並具有確認的功能,Register.js是反應成分 其中i將使所有的輸入字段使用form-group.js組件和 最後一個文件是Modal.js,其中的提交按鈕位於。代碼如下所示:

形式,group.js

import React from 'react'; 
class FormGroup extends React.Component { 

    verifyField(validations) { 
    // Code to verify the field if null and set className 
    const hasError = 'hasError' 
    } 

    render() { 
    return (
    <div> 
     <input id="myform" onSubmit={// Try to run verifyField(this.props.validations) when submitted but onSubmit only works in the form element} className={`${hasError}`} ></input> 
    </div> 
    ) 
    } 
} 

Register.js

import React from 'react'; 
import FormGroup from './form-group.js' 

class Register extends React.Component { 

    render() { 
    return (
    <div> 
     <form name="form" id="form"> 
     <FormGroup> 
      required 
      name='Full Name' 
      validations={validations} 
     </FormGroup> 
     <FormGroup> 
      required 
      name='Mother Name' 
      validations={validations} 
     </FormGroup> 
     <FormGroup> 
      required 
      name='Nickname' 
      validations={validations} 
     </FormGroup> 
     <form/> 
    </div> 
    ) 
    } 
} 

Modal.js

import React from 'react'; 
import Register from './Register.js' 

class Modal extends React.Component { 

    render() { 
    return (
    <div> 
     <Register /> 
     <button form="form">Submit</button> 
    </div> 
    ) 
    } 
} 

回答

0

我真的不知道你是什麼'試圖從書面描述中實現,但假設你想在表單提交時動態地改變輸入的className,h你可以做什麼:

class FormGroup extends React.Component { 
    constructor(props){ 
    super(props); 
    this.state = { hasError: 'noError' }; 
    } 

    verifyField(validations) { 
    // Code to verify the field if null and set className 
    // If error 
    this.setState({hasError: "hasError"}) 
    } 

    render() { 
    return (
    <div> 
     <input id="myform" className={`${this.state.hasError}`} onSubmit={ // call verifyField } ></input> 
    </div> 
    ) 
    } 
} 
+0

從我在這裏讀的https://facebook.github.io/react/docs/forms.html它似乎像onSubmit通常只在窗體組件。我想如果你需要的只是數據驗證,你可以嘗試通過做這樣的事情來實現實時輸入驗證。' – kdenz

+0

嗨,謝謝你的回覆,這個代碼的問題是,當輸入具有onSubmit屬性時,它會自動調用它,如果我寫:' console.log('This is not shown on submit')} />'Call on render:

+0

是的,它只適用於表單組件,但我需要一些方法在'input'中實現它。是否有按鈕發送的任何屬性,我可以捕獲或類似的東西? –