触发onSubmit事件

时间:2015-09-16 03:15:37

标签: javascript jquery forms reactjs submit

我有一个form的组件,其中onSubmit处理程序设置为this.props.onSubmit

我试图在此表单中添加一些额外的功能,我希望它在暂停(1000毫秒)后提交。

我似乎无法使用jquery $inputQuery.trigger('submit')提交表单,如果我只是致电.onSubmit(),则处理程序不会拥有event

  componentDidMount: function () {
    console.log('hi')
    var _this = this
    var dn = React.findDOMNode(this.refs.inputQuery)
    var $inputQuery = $(dn)
    $inputQuery.on('keyup', function () {
      console.log('bo')
      delay(function () {
        console.log('boook')
        // $inputQuery.trigger('submit') // doesn't work
        // $inputQuery.submit() // doesn't work
        _this.props.onSubmit()
      }, 1000)
    })
  },

如何在具有反应的特定onSubmit上触发ref事件?

1 个答案:

答案 0 :(得分:2)

this github issue我了解到:

  

... jQuery没有触发真正的DOM事件,但试图在自己的内部事件映射中找到回调...    - bloodyowl

要模拟/触发事件,请使用React.addons.TestUtils.Simulate.click()等方法.submit()并提供node

componentDidMount更改为:

function () {
  var time = this.props.fireSubmitOnEntry
  if (this.props.fireSubmitOnEntry) {
    var inputNode = React.findDOMNode(this.refs.inputQuery)
    var formNode = React.findDOMNode(this.refs.form)
    var $input = $(inputNode)
    $input.on('keyup', function (e) {
      var code = e.which
      if (code === 13) return false
      delay(function () {
        React.addons.TestUtils.Simulate.submit(formNode)
      }, time)
    })
  }
}

请记得使用var React = require('react/addons')npm一起访问TestUtils