【问题标题】:Button type "button" vs. "submit" [duplicate]按钮类型“按钮”与“提交”[重复]
【发布时间】:2016-10-10 16:51:33
【问题描述】:

buttontype="button"type="submit" 之间有区别吗?是否存在功能差异,还是只是为了便于代码阅读的描述性名称?

这与input 不同吗?

【问题讨论】:

标签: html html-input htmlbutton


【解决方案1】:
<input type="button" /> 

按钮不会提交表单 - 默认情况下它们不会做任何事情。它们通常与 JavaScript 结合使用,作为 AJAX 应用程序的一部分。

<input type="submit"> 

按钮将在用户单击它们时提交它们所在的表单,除非您使用 JavaScript 另有指定。

当通过以下代码提交表单时,我们应该使用 type=button 而不是 type=submit 来防止表单提交两次。

@using (Html.BeginForm("View", "Controller", FormMethod.Post, new { id = "signupform" }))
        {
         //Form elements
        }

【讨论】:

    【解决方案2】:

    它们在向服务器提交表单数据方面有不同的默认行为 该按钮有一个名为“type”的属性,并且可以包含这些值:

    提交:具有向服务器提交表单数据的默认行为。如果未指定属性,或者属性动态更改为空值或无效值,则这是默认值。

    按钮:按钮具有默认行为。它可以有与元素事件相关联的客户端脚本,当事件发生时触发。

    【讨论】:

      【解决方案3】:

      按钮的风格化比输入可用于锚标签(链接)更好。

      • 图片
      • 内容等

      输入可以实现与按钮相同的功能,但设计更丑。

      假设输入是老式的,按钮更酷。

      【讨论】:

        【解决方案4】:

        &lt;button type="button"&gt;&lt;/button&gt; 按钮不会提交表单 - 默认情况下它们不会执行任何操作。 Button 不会自行提交表单。它是一个简单的按钮,用于使用 javascript 执行某些操作,而 Submit 是一种按钮,默认情况下,只要用户单击提交按钮,就会提交表单。

        【讨论】:

          【解决方案5】:

          来自MDN

          type
          按钮的类型。可能的值是:

          • 提交:按钮将表单数据提交给服务器。 如果未指定属性,则这是默认值,或者如果属性动态更改为空值或无效值。
          • reset:该按钮将所有控件重置为其初始值。
          • 按钮:按钮没有默认行为。它可以有与元素事件相关联的客户端脚本,这些事件在事件发生时触发。

          至于buttoninput的区别:

          • button 可以有一个单独的值作为数据,而对于 input,数据和按钮文本始终相同:

            <input type="button" value="Button Text"> <!-- Form data will be "Button Text" -->
            <button type="button" value="Data">Button Text</button>
            
          • button 可以包含 HTML 内容(例如图像),而 input 只能包含文本。

          • button 可能更容易与 CSS 中的其他 input 控件(如文本字段)区分开来。注意向后浏览器兼容性。

            input {
            
            }
            button { /* Always works */
            
            }
            input[type=button] { /* Not supported in IE < 7 */
            
            }
            

          【讨论】:

          • 无论如何我可以禁用提交按钮向服务器发送数据吗?我已经有了按钮的主干监听器,它将使服务器发布,但只需要按钮类型为提交即可访问。
          • @jlei 你可以在onclick事件中返回false
          • 那不会让我的骨干听众也因为那个点击而混乱吗?还是它们会是两个独立的东西?
          • @jlei 我自己从未使用过 Backbone.js,但我想它会正常工作。
          【解决方案6】:

          类型为“button”的按钮不会提交表单,但没有类型或 type=submit(默认)的按钮会提交。 type=submit 的按钮与 type=submit 的输入几乎相同,但按钮可以包含 HTML 内容。

          【讨论】:

          • 所以提交类型发生了一些常规按钮类型没有发生的事情?我问这个是因为可访问性要求我给按钮一个提交类型,但是我已经在使用主干来收听按钮并发出发布请求,所以我只是不想让 html 做一些事情来搞砸除了主干发出请求外,还有提交类型按钮的背景
          猜你喜欢
          • 2020-01-09
          • 2017-11-23
          • 2021-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多