【问题标题】:Trigger onSubmit event触发 onSubmit 事件
【发布时间】:2015-09-16 03:15:36
【问题描述】:

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

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

如果我只是调用.onSubmit(),我似乎无法使用jquery $inputQuery.trigger('submit') 提交表单,处理程序将没有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)
    })
  },

如何通过 react 在特定的 ref 上触发 onSubmit 事件?

【问题讨论】:

    标签: javascript jquery forms reactjs submit


    【解决方案1】:

    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

    【讨论】:

    • import ReactTestUtils from 'react-addons-test-utils';ReactTestUtils.Simulate.submit(formNode)
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2011-04-02
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多