2016-05-15 17 views
10

einreichen Ich habe folgende react-bootstrap Komponente:Kann nicht Form reagieren-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> 

Ich möchte das Formular abgeschickt werden, wenn ich auf die Schaltfläche „Senden“ klicken. Wenn ich auf die Schaltfläche klicke, erreicht die Steuerung nicht die this.gotEmail Methode.

Warum ist das der Fall?

Antwort

19

FormGroup bietet nicht am Senden Ereignis. Sie können es wickeln mit form Element und Event-Handler es anbringt:

<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

Nur neugierig, was ist die Verwendung der Rolle = "Form"? Für mein Beispiel habe ich gerade und es funktioniert – Ycon

+0

Also wenn ich

wie das Dokument sagt (https://react-bootstrap.github.io/components.html#forms-horizontal) verwenden, Muss ich das mit einem anderen Formular umhüllen, da es keine onSubmit-Prop und 2 Formulare in meinem DOM gibt? – migueloop

+1

@migueloop ab Version 0.30.2 können Sie einfach verwenden –

5

Es gibt eine Sache fehlt, glaube ich.

In gotEmail sollte es eine preventDefault sein, so dass, wenn der Benutzer drücken Sie 'Enter', wird die Seite nicht neu geladen:

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

Ab Version 0.30.2, können Sie es in ein <Form> wickeln , die die onSubmit-Eigenschaft unterstützt:

<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> 
Verwandte Themen