JavaScript表单提交不发送输入类型=submit的值

JavaScript form submission doesn't send value of input type=submit

本文关键字:类型 submit 的值 输入 表单提交 JavaScript      更新时间:2023-09-26

在某些情况下,我使用jQuery来自动提交表单。下面是我的代码:

$("form [data-autosubmit]").closest("form").submit();

它工作,但是它不发送input type=submit按钮的名称和值。

详细说明,下面的代码:

<form method="POST">
<input type="text" name="input" value="text they entered">
<input type="submit" name="submit" value="Submit">
</form>
当用户提交时,

将发送以下POSTdata:

input: text they entered
submit: Submit

但是当JavaScript提交表单时,只发送这个POSTdata:

input: text they entered

我的PHP脚本依赖于POSTdata中存在的"submit"值。

我想我可以做:

$("form [data-autosubmit]").closest("form").find("input[type=submit]").click();

但是,当表单上有一个submit事件用于此目的时,它似乎违背了逻辑。

HTML form是为了支持多个submit输入而构建的(例如,相同的表单可以有"插入"answers"编辑"按钮)。因此,表单依赖于点击在_POST提交中实际注册所选字段。基本上,HTML允许这样的表单:

<form [...]>
  <input type="submit" name="Insert" value="Insert">
  <input type="submit" name="Update" value="Update">
</form>
在服务器端像这样处理

:

if(!empty($_REQUEST['Update'])){
  //Run update logic here..
}
elseif(!empty($_REQUEST['Insert'])){
  //Run insert logic here...
}

如果Javascript submit()函数在POST数组中注册了两个按钮,它将破坏使用此有效标记/逻辑的应用程序,因此它们默认省略submit输入。

所以你的Javascript解决方案(触发点击提交按钮,而不仅仅是submit()表单)是正确的方法。