我想用vanilla JS提交表单,但仍然会触发提交事件.基本上与按"提交"按钮相同.
HTMLFormElement.submit()跳过"submit"事件,因此它对我不起作用.
HTMLFormElement.requestSubmit()似乎可以满足我的需求,但它的浏览器支持非常差.我想要Chrome/Safari/Firefox/Edge支持.
我想用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>