表单上的ReactJS onSubmit不起作用

时间:2015-08-18 14:16:07

标签: javascript coffeescript reactjs

我有一个神秘的问题:当我点击按钮或按回车键时,什么也没发生。

Row = ReactBootstrap.Row
Col = ReactBootstrap.Col
Input = ReactBootstrap.Input
Button = ReactBootstrap.Button

@NewSession = React.createClass
  handleSubmit: (e) ->
    alert 'f'
    e.preventDefault()
    Dispatcher.query('sessions', {}, 'POST')
  render: ->
    <form onSubmit={@handleSubmit} noValidate>
      <Row>
        <Col md={6} mdOffset={3} className='text-center'>
          <Input type='text' placeholder='Your username' ref='login' />
          <Input type='text' placeholder='Your password' ref='password' />
          <Button bsStyle='success'>Sign in</Button>
        </Col>
      </Row>
    </form>

这种奇怪行为的原因是什么?为什么handleSubmit不起作用?

已更新

如果我在按钮上放置onClick={@handleSubmit}处理程序,则单击是有效的

2 个答案:

答案 0 :(得分:1)

您没有任何提交事件...您需要在render方法中声明一个type = submit。然后,您可以使用onSubmit事件处理函数。示例如下:

   <form onSubmit={this.handleSubmit.bind(this)}>
		<div className="form-group col-sm-7">
          <input type="text" className="form-control" ref="inputmessage" id="inputDefault" />
		</div>
	  <div className="form-group col-sm-5">
		<button type="submit" className="btn btn-block btn-primary">Send Message </button>
		</div>
  </form>

答案 1 :(得分:1)

react-bootstrap Button个组件default to type="button",因此您需要添加type="submit"来创建提交按钮。

<Button type='submit' bsStyle='success'>Sign in</Button>