Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在提交数据之前,如何将元素添加到表单数据?_Javascript_Html_Forms_Dojo - Fatal编程技术网

Javascript 在提交数据之前,如何将元素添加到表单数据?

Javascript 在提交数据之前,如何将元素添加到表单数据?,javascript,html,forms,dojo,Javascript,Html,Forms,Dojo,注意:这是一个关于Javascript和HTML表单的非常具体的问题。我已经搜索了这个特定问题,但找不到答案,这个问题涉及Dojo框架,不涉及JQuery。请不要将此标记为JQuery问题的“重复”,因为它不涉及JQuery 我需要通过点击按钮提交表格,按钮类型为“按钮”,而不是“提交”。但是,我还需要包括被单击的按钮的名称,在这些情况下通常不会提交该名称。此更改的原因(从最初的“提交”功能)是因为此动态表单上可能有十几个按钮,如果它们都是“提交”按钮,则用户将按“回车”移动到下一个字段,并且在

注意:这是一个关于Javascript和HTML表单的非常具体的问题。我已经搜索了这个特定问题,但找不到答案,这个问题涉及Dojo框架,不涉及JQuery。请不要将此标记为JQuery问题的“重复”,因为它不涉及JQuery

我需要通过点击按钮提交表格,按钮类型为“按钮”,而不是“提交”。但是,我还需要包括被单击的按钮的名称,在这些情况下通常不会提交该名称。此更改的原因(从最初的“提交”功能)是因为此动态表单上可能有十几个按钮,如果它们都是“提交”按钮,则用户将按“回车”移动到下一个字段,并且在表单执行意外操作(如提交)时会感到困惑而不是移动到下一个字段

我想出的方法是将所有
button type='submit'
标记更改为
button type='button'
控件。然后我添加了这个小Javascript片段(我们使用这个库,所以这是语法):

这是可行的,但在服务器端,它没有得到正确的处理。按下提交按钮时,表单数据(由Chrome解析)如下所示:

myInput1: 1
myInput2: Some Data
_button_Button23: addSomeFields
最后一行是按钮名称和ID。使用上述Javascript提交表单时,最后一行缺失:

myInput1: 1
myInput2: Some Data
在提交表单数据之前,我需要将最后一个元素添加到表单数据中


我已经搜索了这些信息,但不幸的是所有的使用,这是不提供给我在这种情况下。如何使用Dojo或常规Javascript将此信息添加到表单数据中?

您可以在提交时将button元素添加到表单中,或者创建一个隐藏的输入元素并将其添加到表单中

var form = dom.byId('myform');
form.appendChild(e.target);
form.submit();

为什么不将buttons value属性设置为上述click事件处理程序中的隐藏表单字段元素?@Pawal-不幸的是,由于我们使用的是SpringWebFlow,所以在服务器端我也没有很多选择。表单值必须以非常特定的方式进入服务器,否则Web流不会使用它们。我们几乎把自己写进了一个角落(@Pawal-我重读了你的答案,事实上它是正确的。神奇的是,我需要创建一个隐藏字段作为不同类型的输入,而不是一个按钮,将其添加为“新字段”。如果你想在下面发布一个答案,我会将其标记为正确的。随它去吧。很高兴它为你解决了问题。:D
var form = dom.byId('myform');
form.appendChild(e.target);
form.submit();