捕获来自不同事件的提交事件
Catching submit events from different events
我有一个表单,它有一堆常规字段,基本上是一个子表单(尽管它没有另一个表单标记),它通过javascript设置隐藏字段。但是,如果你点击回车键提交子表单,它会提交更大的表单。我理解它为什么这么做,但这不是想要的行为。
有没有一种简单的方法可以用javascript设置子表单,以便在提交(输入按钮、按钮单击等)时调用java事件处理程序?
我尽量避免检查特定的按键事件。我更喜欢保留本机浏览器提交控件。
您使用的是jQuery标签,所以我将为您提供一个jQuery解决方案:
<form id="innerForm">
<!-- Form Stuff -->
</form>
<script>
$('#innerForm').submit( function(e) {
// called when the submit button is pressed
});
</script>
无论表单是如何提交的,都将调用提交处理程序。如果要停止刷新页面,请在处理程序中添加行e.preventDefault()
。
您可以做的是,您可以有一个<input type="button" onclick="handle()"/>
,而不是<input type="submit"/>
,然后,在handle()
函数中,您可以循环遍历包含子表单元素的div
的子元素。<input type="submit"/>
用于提交整个表单;它不知道你在一个子窗体中。此外,据我所知,HTML不允许没有黑客代码的嵌套表单标记。
我不认为你能够在不绕过规范的情况下完成你想做的事情,即嵌套表单,包括事件处理程序。我认为最好的做法是将它们放在div中,附加一个keydown处理程序,然后用childNodes
循环遍历表单元素
将按键事件处理程序附加到包装子窗体的div标记。在处理程序中,检查事件对象的键代码属性。如果是13,则用户按下回车键,然后您可以"提交"子表单。
div.addEventListener("keypress", function(event) {
if (event.keyCode == 13) {
event.preventDefault();
// submit sub form
}
});
相关文章:
- 当触发下拉列表的onchange事件时,使用JavaScript提交表单
- 在表单中的输入字段上提交事件
- 如何阻止onScreenSubmitted事件中的Aviarc屏幕提交
- 调用DOM提交方法时未激发jQuery提交事件
- 如何在表单提交事件后运行JavaScript*
- 选择使用 jQuery 接收 change() 事件的表单的提交按钮
- 在Jquery easyui中,多个选项卡提交按钮点击事件正在重定向到主页(第一个)选项卡
- 无法在第一次单击事件时提交表单
- Jquery处理提交按钮's单击事件而不中断表单发布
- 在表单提交按钮的点击事件中调用函数时发生引用错误
- 我可以在客户端上找到在收听提交事件时按下了哪个提交按钮吗?
- 动态添加/复制表单时绑定到表单提交事件
- 如何获取 Redux-Form 的提交事件中的表单值
- 显示带有表单提交的单击事件的 toastR
- 正在尝试使用onclick事件提交父窗体,无法工作
- 输入类型图像上的点击事件提交表单
- ExtJS Store销毁事件提交
- 在选择文件之前单击事件提交表单
- 谷歌分析事件提交
- 我如何说服这个jQuery按钮点击事件提交正确的表单[在Safari中]