我有一个包含一堆常规字段的表单,基本上是什么是子表单(尽管它没有另一个表单标记),它通过javascript设置隐藏字段。但是,如果您按Enter键提交子表单,则会提交较大的表单。我明白为什么会这样做,但这不是理想的行为。
是否有一种简单的方法可以在javascript中设置子表单,以便在提交(输入按钮,单击按钮等)时调用java事件处理程序?
我正在努力避免检查特定的按键事件。我更希望保留原生浏览器提交控件。
答案 0 :(得分:1)
您正在使用jQuery标记,因此我将为您提供一个jQuery解决方案:
<form id="innerForm">
<!-- Form Stuff -->
</form>
<script>
$('#innerForm').submit( function(e) {
// called when the submit button is pressed
});
</script>
将提交提交处理程序但是提交表单。如果要停止刷新页面,请在处理程序中添加行e.preventDefault()
。
答案 1 :(得分:0)
你可以做的是,而不是拥有<input type="submit"/>
,你可以拥有<input type="button" onclick="handle()"/>
,然后,在你的handle()
函数中,你可以循环遍历子元素div
您拥有子表单元素。<input type="submit"/>
旨在提交整个表单;它不知道你在子表格中。另外,据我所知,HTML不允许嵌套的表单标签而没有hackish代码。
我认为你不能做你想做的事情,这是嵌套的表单,包括事件处理程序,而不会绕过规范。我认为最好的办法是将它们放在div中,附加一个keydown处理程序,然后使用childNodes
答案 2 :(得分:0)
将keypress事件处理程序附加到包装子表单的DIV标记。在处理程序中,检查事件对象的键代码属性。如果是13,则用户按下回车键,然后您可以“提交”子表单。
div.addEventListener("keypress", function(event) {
if (event.keyCode == 13) {
event.preventDefault();
// submit sub form
}
});