首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在使用<button> ()时,属性为type=的HTMLFormElement.submit(提交)不能与表单一起提交?

问为什么在使用<button> ()时,属性为type=的HTMLFormElement.submit(提交)不能与表单一起提交?
EN

Stack Overflow用户
提问于 2021-12-30 16:34:51
回答 1查看 102关注 0票数 0

我正好有以下表格:

代码语言:javascript
复制
<form method="post" action=<?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?> enctype="multipart/form-data">
  <button type="submit" name="identifier" value="wikipedea_form">
    Add Post
  </button>
</form>

我使用jquery将此表单提交为

代码语言:javascript
复制
$("form").submit();

这不会发送post数据$_POST["identifier"]。我假设jQuery在引擎盖下使用HTMLFormElement.submit()。MDN文档说:

属性为“submit”的<input>在使用HTMLFormElement.submit()时不会与表单一起提交.

我认为这同样适用于button标记。我想100%肯定我是在问你。可能取决于浏览器等等.

那么,在使用<button>时,属性为type="submit"的HTMLFormElement.submit()会不会与表单一起提交呢?请引用官方文件来支持你的回答。

EN

回答 1

Stack Overflow用户

发布于 2021-12-30 18:07:39

只有成功的控件才以正常形式提交。

只有当提交按钮用于提交表单时才会成功(或者如果表单是通过输入单个文本输入提交的,在这种情况下,默认的Submit按钮是成功的)。这样,您就可以区分在以下情况下使用哪个按钮提交表单:

代码语言:javascript
复制
<button name="action" value="like">Like</button>
<button name="action" value="dislike">Dislike</button>

使用JS触发表单提交绕过了提交按钮的选择。

  1. 对于控件中的每个元素字段,按树顺序排列:
代码语言:javascript
复制
1. If any of the following is true: 
    - The field element has a datalist element ancestor.
    - The field element is disabled.
    - **The field element is a button but it is not submitter.**
    - The field element is an input element whose type attribute is in the Checkbox state and whose checkedness is false.
    - The field element is an input element whose type attribute is in the Radio Button state and whose checkedness is false.

然后继续.

- https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#constructing-the-form-data-set

如果您希望每次提交表单时都提交带有表单的数据,无论它是如何提交的:请使用<input type="hidden" ...>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70534259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档