2016-07-29 23 views
0

onChangeイベントは入力タグで発生しません。以前は入力値を追跡するためにLinkedStateMixinを使用していました。最近、onChangeイベントを追加していくつかの関数を実行し、LinkedStateMixinを削除したいが、onChangeは起動できない。 setUsername()にe.stopPropagation()を追加しようとしましたが、動作しません。私はonKeyDown、onClick、そしてectのような他のイベントを試みました。いずれも解雇することはできません。何が問題ですか?onChangeイベントが発生しません

var React = require('react'); 

var SessionActions = require('../../actions/session_actions'); 
var UserStore = require('../../stores/user_store'); 

var LogInForm = React.createClass({ 

    getInitialState: function() { 
    return ({ 
     user: undefined, 
     username: '', 
     password: '', 
    }); 
    }, 

    componentDidMount: function() { 
    this.token = UserStore.addListener(this.updateUserStore); 
    }, 

    componentWillUnmount: function() { 
    this.token.remove(); 
    }, 

    updateUserStore: function() { 
    this.setState({user: UserStore.all()}); 
    this.setState({username: ''}); 
    this.setState({password: ''}); 
    }, 

    setUsername: function(e) { 
    console.log("Fired"); 
    }, 

    handleSubmit: function(e) { 
    e.preventDefault(); 
    SessionActions.logIn({ 
     username: this.state.username, 
     password: this.state.password 
    }); 
    this.updateUserStore(); 
    }, 

    render: function() { 
    return (
     <div> 
     <h4>Log In</h4> 
     <div> </div> 
     <form onSubmit={this.handleSubmit}> 
      <input onChange={this.setUsername} placeholder="Username" type="text"/> 

      <input placeholder="Password" type="password"/> 

      <input type="submit" value="Log In"/> 
     </form> 
     </div> 

    ); 
    } 
}); 

module.exports = LogInForm; 

答えて

0

変更handleUsernameへsetUsernameから関数名。

1

私はあなたが投稿して、明白な警告にもかかわらず、のonchangeイベントが発生したコードでthis jsfiddleを作成しました。だから私はあなたのコードに何か間違っていると思う。

コンポーネントはレンダリングされますか?私は見てみることができるように動作していない場所でフィドルを提供できますか?

+0

ありがとうございます!私はあなたのフィドルを試しました、それはフィドルで働いていますが、なぜそれが私が投稿したものとまったく同じ私の上で動作していないのか分かりません。私はクロムを使用していますが、フォームはレンダリングできますが、onChangeは起動しません。私はwebpackを使用しています、あなたはそれが問題を引き起こすと思いますか? –

+0

フォームがレンダリングされているため、Webpackの問題ではないと思います。 Chrome Devツールを開き、コンソールに警告やエラーが表示されていないか確認してください。 –

+0

私はついにこの問題を解決しました!ハンドラ関数の名前をsetUsername()からhandleUsername()に変更しても問題ありません。なぜこれが起こったのか知っていますか? –

関連する問題