当前位置: 首页 > 面试题库 >

ReactJS:如何从另一个事件触发表单提交事件

薄伟彦
2023-03-14
问题内容

我有两个反应事件:

  1. 表单提交事件
        sendMessage: function(event){
        console.log(event);
        event.preventDefault();
    },
  1. keyPress事件
        textareaKeypress: function(event){
        if (event.which == 13 && !event.shiftKey){
            document.getElementById('messagebox').submit();
        }
    },

但是reactJS没有捕获由触发的表单提交textareaKeypress。如何通过适当的事件调用sendMessagefrom
textareaKeypress


问题答案:

我今天学到了一些新东西:这就是DOM的工作方式。

从MDN网站:

onsubmit="return false;"从基于Gecko的应用程序中调用此方法时,不会触发表单的onsubmit事件处理程序(例如)。通常,不能保证HTML用户代理会调用它。

根据HTML规范:

submit()调用该方法时,必须formform元素本身 提交submit()元素, 并使用
set方法标志set

其次是(第4.10.22.3节)

如果submit()未设置来自方法的提交标志,则submitform 处引发 一个简单的事件 ,该 事件
会冒泡并且可以取消命名。

因此,如果submit()设置了方法标志,则不会触发该事件。

通过以下代码(JSFiddle示例),我能够得到您(和我)期望的行为:

<form onSubmit={this.handleSubmit} ref="form">
  <textarea onKeyPress={this.handleKeyPress} />
</form>

// ...

this.refs.form.getDOMNode().dispatchEvent(new Event("submit"));

(您将在IE中需要更多详细的代码。)

jQuery的$(form).submit()
委托
$(form).trigger("submit"),所以我希望这是一个类似的解决方法。



 类似资料:
  • 我有一个表单,其中有一条错误消息,如下例所示: http://codepen.io/anon/pen/dYWyEM?editors=101 重现问题的步骤如下: 打开coDepen链接后, 1)专注于输入领域 2) 按提交按钮 3) 由于首先触发模糊事件,因此首先隐藏错误消息,从而更改提交按钮的位置。因此,点击事件根本没有注册,我需要再次点击以提交表单。 有没有办法先发送提交事件? 我需要检测触发

  • 本文向大家介绍如何使用jQuery click事件提交表单?,包括了如何使用jQuery click事件提交表单?的使用技巧和注意事项,需要的朋友参考一下 要使用jQuery click事件提交表单,您需要检测Submit事件。让我们使用点击事件而不使用点击事件来提交表单。 示例 您可以尝试运行以下代码以了解如何使用jQuery click事件提交表单-

  • 提交表单时,会触发 submit 事件,它通常用于在将表单发送到服务器之前对表单进行校验,或者中止提交,并使用 JavaScript 来处理表单。 form.submit() 方法允许从 JavaScript 启动表单发送。我们可以使用此方法动态地创建表单,并将其发送到服务器。 让我们看看它们的更多细节。 事件:submit 提交表单主要有两种方式: 第一种 —— 点击 <input type="

  • 我正在尝试捕获提交按钮click事件,并将页面滚动到顶部,如果它还没有在那里。 由于某些原因,该事件不会第一次触发,即如果滚动大于0,则不会发生滑到页面顶部的情况。只有第二次才会激活。 有什么想法或建议吗?我是不是漏掉了什么?谢谢.

  • 问题内容: 如何在 ReactJS中 手动触发click事件?当用户单击element1时,我想自动触发对标签的单击。 问题答案: 您可以使用该道具通过回调获取对基础HTMLInputElement对象的引用,将该引用存储为类属性,然后使用该引用稍后使用HTMLElement.click方法触发事件处理程序中的单击。 在您的方法中: 在事件处理程序中: 完整示例: 请注意 ES6箭头函数,该函数为

  • 问题内容: 我正在使用ASP.net Web应用程序。 我有一个带有提交按钮的表格。提交按钮的代码如下所示。 我想写如下内容: 我该怎么做呢? 问题答案: 你最好做… 如果返回,则您的表单不会提交。 您可能还应该将事件处理程序从内联移动。