【问题标题】:HTML why do buttons in forms send data?HTML 为什么表单中的按钮会发送数据?
【发布时间】:2012-04-12 02:32:42
【问题描述】:

这是一个非常初级的问题,但我相信有人知道原因。在 HTML 中,当我自己制作一个按钮元素并且不给它和 onclick 并且没有 jQuery .click() 时,按钮将什么也不做。完美的。但是当我这样做并且<form> 元素内的按钮时,它会尝试将所有表单元素的 GET 数据发送到我网站的根地址?为什么这样做?我没有将其设为提交按钮,甚至没有在该表单上定义methodaction??

提前感谢您的信息!

** 编辑 **

这就是我为解决问题所做的。对于<form> 内的按钮,请使用:

<button type="button"></button>

默认情况下它不会做任何事情。

【问题讨论】:

  • 我也想知道这个。我个人认为按钮应该只是一个按钮,input[type=submit] 元素实际上应该提交表单...
  • 我不确定我是否理解这个问题。按钮是使事情发生的机制。那么一个不做任何事情的按钮有什么意义呢?如果您不想要任何表单功能,为什么要使用 &lt;form> 呢?顺便说一句,method 是可选的,默认为GETlocation 没有属性。

标签: html forms button


【解决方案1】:

从相应的MDN 条目中可以看出,按钮元素的type 属性的默认值为submit。因此,如果您将其省略或不将其更改为 buttonreset,则会启动默认行为并提交表单。

<form action="">
  <button type="button">Nothing will happen</button>
  <button>Form gets submitted</button>
</form>

【讨论】:

  • 我知道它确实提交了,但不知道为什么。感谢您的链接。
  • 我想这不是为什么,可能是为了让代码更容易回到过去……也许吧。
  • @jeffery_the_wind 我认为早期的预期用途只是提交表单。那时不需要额外的type 属性。后来这个需求来了,但为了保持向后兼容性,默认类型仍然是submit。只是我的想法 - 没有关于此的参考。
【解决方案2】:

我没有把它设为提交按钮

&lt;button&gt; 元素具有a type attribute. The default value is submit。如果您不希望它提交表单,请设置type="button"

甚至定义一个方法

method 默认为GET

或该表格上的位置??

action 默认为当前 URI。

【讨论】:

    【解决方案3】:

    之所以这样设计,是因为您有时需要知道在服务器端按下了哪个按钮。如果您想要没有按钮的按钮功能,请使用样式化的 A 标记。

    【讨论】:

      【解决方案4】:

      按钮在表单中被视为提交控件,不知道为什么。

      它被发布到你的根目录的原因是因为你没有指定action,所以使用了默认值。

      它使用 GET 的原因是因为这是默认的 method

      为防止这种情况发生,请将return false; 添加到按钮的onclick 末尾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多