首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发onSubmit事件

触发onSubmit事件
EN

Stack Overflow用户
提问于 2015-09-16 03:15:36
回答 1查看 1.1K关注 0票数 0

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

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

如果我只调用$inputQuery.trigger('submit'),处理程序就不会有event,我似乎不能用jquery提交表单。

代码语言:javascript
复制
  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在特定的onSubmit上触发ref事件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-16 03:41:37

我从这个github问题了解到:

...jQuery不触发真正的DOM事件,而是试图在自己的内部事件映射中找到回调。- 血禽

要模拟/触发事件,请使用React.addons.TestUtils.Simulate,这些方法像.click().submit(),并提供了一个node

它将componentDidMount更改为:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32599175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档