2016-05-15 15 views
10

Mam następujący react-bootstrap komponent:Nie można wysłać formularza reagować-bootstrap

 <FormGroup onSubmit={this.gotEmail} role="form"> 
      <FormControl type="text" className="form-control"/> 
      <Button className="btn btn-primary btn-large centerButton" type="submit">Send</Button> 
     </FormGroup> 

chciałbym formularz należy złożyć po kliknięciu przycisku „Wyślij”.

Jeśli jednak kliknę przycisk, sterowanie nie osiągnie metody this.gotEmail.

Dlaczego tak się dzieje?

Odpowiedz

19

FormGroup nie przekazuje zdarzenia. Można owinąć ją form elementu i dołączyć do niego obsługi zdarzeń:

<form onSubmit={this.gotEmail}> 
    <FormGroup role="form"> 
    <FormControl type="text" className="form-control"/> 
    <Button className="btn btn-primary btn-large centerButton" type="submit">Send</Button> 
    </FormGroup> 
</form> 
+0

Ciekawe, jaka jest rola = "forma"? Dla mojego egzaminu, mam właśnie i działa – Ycon

+0

Więc jeśli używam

, jak mówi doc (https://react-bootstrap.github.io/components.html#forms-horizontal), Czy muszę to zawijać w innym formularzu, ponieważ nie ma onprogramu onSubmit i ma 2 formularze w moim DOM? – migueloop

+1

@migueloop od wersji 0.30.2, możesz po prostu użyć –

5

Jest jedna rzecz, brakuje, myślę.

W gotEmail, nie powinno być preventDefault, więc jeśli użytkownik naciśnie „enter”, strona nie będzie przeładować:

gotEmail(event){ 
    event.preventDefault(); 
    // code you want to do 
} 
1

Począwszy od wersji 0.30.2, można owinąć go w <Form> , który obsługuje właściwość onSubmit:

<Form onSubmit={this.gotEmail}> 
    <FormGroup role="form"> 
    <FormControl type="text" className="form-control"/> 
    <Button className="btn btn-primary btn-large centerButton" 
    type="submit">Send</Button> 
    </FormGroup> 
</Form> 
Powiązane problemy