我想用vanilla JS提交表单,但仍然会触发提交事件.基本上与按"提交"按钮相同.

HTMLFormElement.submit()跳过"submit"事件,因此它对我不起作用.

HTMLFormElement.requestSubmit()似乎可以满足我的需求,但它的浏览器支持非常差.我想要Chrome/Safari/Firefox/Edge支持.

推荐答案

要以编程方式提交表单,但仍然触发"提交"事件besides using 100,需要在"提交"按钮上使用.click()方法.下面的例子如下:

  • 将其数据发布到实时测试服务器的<form>.测试服务器的响应将显示在<form>后面的<frame>中.

  • <form>之外的<button>,也没有分配form属性.此按钮与<form>隔离,但它仍将间接触发"提交"事件,因为它已注册到"单击"事件,并且事件处理程序将以编程方式单击"提交"按钮.

  • 注意,使用.click()方法不需要<button>,它可以通过其他方法调用,就像任何其他方法或函数一样.

100

<button class='trigger'>Trigger</button>

const trigger = document.querySelector('.trigger');

trigger.onclick = e => document.querySelector('form button').click();
.trigger {
  vertical-align: top
}
<form id='UI' action='https://httpbin.org/post' method='POST' target='response'>
  <fieldset>
    <legend>Programmatically Submit a Form</legend>
    <input name='test' value='TEST'>
    <button name='send'>Send</button>
  </fieldset>
</form>
<hr>
<button class='trigger'>Trigger</button>
<iframe name='response'></iframe>

Javascript相关问答推荐

JavaScript:循环访问不断变化的数组中的元素

是什么原因导致此Angular 16电影应用程序中因类型错误而不存在属性?

仅圆角的甜甜圈图表

在React中获取数据后,如何避免不必要的组件闪现1秒?

使用复选框在d3.js多折线图中添加或删除线条

使用LocaleCompare()进行排序时,首先使用大写字母

无法从NextJS组件传递函数作为参数'

如何在bslib nav_insert之后更改导航标签的CSS类和样式?

如何在Vue 3中创建自定义 Select 组件,并将选项作为HTML而不是props 传递?

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

将异步回调转换为异步生成器模式

如何限制显示在分页中的可见页面的数量

打字脚本中方括号符号属性访问和拾取实用程序的区别

在不扭曲纹理的情况下在顶点着色器中旋转UV

不同表的条件API端点Reaction-redux

使用RxJS from Event和@ViewChild vs KeyUp事件和RxJS主题更改输入字段值

如何根据输入数量正确显示alert ?

用另一个带有类名的div包装元素

无法使用npm install安装react-dom、react和next

使用createBrowserRoutVS BrowserRouter的Reaction路由