2017-03-13 11 views
0

Enterキーを押しますに提出しますが、何らかの理由でそれが唯一の代わりに、最初のリアクトブートストラップ形だけで二、私は私が押されて入力したときに行動したい簡単なフォームを作ってるんだ

の、 入力プレス上で動作します

は、コンポーネントのため)(レンダリング:

render() { 
    return (
     <form onSubmit={this.handleSubmit}> 
      <FormGroup controlId="formBasicText"> 
       <ControlLabel>MyLabel</ControlLabel> 
       <FormControl 
        type="text" 
        value={this.state.value} 
        placeholder="Enter something" 
        onChange={this.handleChange} 
       /> 
       <FormControl.Feedback /> 
      </FormGroup> 
     </form> 
    ); 
} 

handleSubmit():

handleSubmit(e) { 
    e.preventDefault(); 
    myMethod({this.state.value}); 
} 

は、なぜこれが唯一の第二入力するプレスに取り組んでいますか?

編集:明らかに、これはオブジェクトコードのサブセットに過ぎません。ちょうどこれを実行しようとすると、もちろん失敗するでしょう。私は間違っていることは、オブジェクトのレンダリングまたはhandleSubmitメソッドのいずれかにある可能性が高いと思います。

は、念のために、ここにコンストラクタです:それはthis.setStateを使用しているときのように、すぐに変更を実装するのではなく、状態の更新をキューに入れているため

constructor(props) { 
    super(props); 
    this.state = { 
     value: "", 
    }; 
    this.handleChange = this.handleChange.bind(this); 
    this.handleSubmit = this.handleSubmit.bind(this); 
} 
+0

ルックは 'MyMethodは({} this.state.value)の後にエラーで落ちます;'。コンソール出力をデバッグまたはチェックしようとしましたか? – degr

+0

これは私のコードをカットダウンしたものですが、エラーの原因と思われる部分のみを示しました。コンストラクタはここにはなく、いくつかの仲裁方法もありません。私の方法は私がここで提示したもので定義されていませんので、もちろんこのコードを実行しようとすると失敗します。すべてうまく動作します。コンソールはログに記録されていますが、エラーはありません。そのことは、* second * enter pressでのみ機能します。 – mstorkson

+0

コンポーネントの外にあるものは、keypressを入力したときに 'event.preventDefault()'を呼び出すことができますか?私はあなたがアプリケーションであなたのコンポーネントだけを持っている場合、それは起こるのだろうか? – degr

答えて

関連する問題