<input type="submit">

类型为**submit**的<input>元素呈现为按钮。当发生click事件(通常是因为用户单击了按钮)时,用户代理会尝试将表单提交到服务器。

<input type="submit">元素的value属性包含一个字符串,该字符串显示为按钮的标签。按钮没有其他真实的值。value提供了按钮的可访问描述

设置 value 属性

html
<input type="submit" value="Send Request" />

省略 value 属性

如果你没有指定value,按钮将会有一个默认标签,由用户代理选择。这个标签很可能是“Submit”或“Submit Query”。以下是在你的浏览器中使用默认标签的提交按钮的示例

html
<input type="submit" />

其他属性

除了所有<input>元素共享的属性外,submit按钮输入还支持以下属性。

formaction

一个字符串,指示要提交数据的 URL。这优先于action属性在拥有该<input><form>元素上。

此属性也适用于<input type="image"><button>元素。

formenctype

一个字符串,用于识别将表单数据提交到服务器时要使用的编码方法。有三个允许的值

application/x-www-form-urlencoded

这是默认值,它在百分比编码文本(使用encodeURI()等算法)后,将表单数据作为字符串发送。

multipart/form-data

使用FormDataAPI 管理数据,允许将文件提交到服务器。如果你的表单包含任何类型为file<input>元素(<input type="file">),你必须使用这种编码类型。

text/plain

纯文本;主要只在调试时有用,这样你可以轻松地查看要提交的数据。

如果指定,formenctype属性的值将覆盖拥有表单的action属性。

此属性也适用于<input type="image"><button>元素。

formmethod

一个字符串,指示将表单数据提交到服务器时要使用的 HTTP 方法;此值将覆盖在拥有表单的表单上给出的任何method属性。允许的值是

get

通过从formactionaction属性给出的 URL 开始构建一个 URL,追加一个问号(“?”)字符,然后追加表单数据,编码方式如formenctype或表单的enctype属性所述。然后,使用 HTTP get请求将此 URL 发送到服务器。此方法适用于仅包含ASCII字符且没有副作用的简单表单。这是默认值。

post

表单数据包含在发送到formactionaction属性给出的 URL 的请求主体中,使用 HTTP post方法。此方法支持复杂数据和文件附件。

dialog

此方法用于指示按钮关闭与输入关联的对话框,并且根本不传输表单数据。

此属性也适用于<input type="image"><button>元素。

formnovalidate

如果存在,则为布尔属性,指定表单在提交到服务器之前不应进行验证。这将覆盖在元素拥有表单的novalidate属性的值。

此属性也适用于<input type="image"><button>元素。

formtarget

一个字符串,指定一个名称或关键字,指示在提交表单后在哪里显示收到的响应。该字符串必须是浏览上下文的名称(即,标签、窗口或<iframe>)。此处指定的值将覆盖在拥有此输入的<form>上给出的任何target

除了标签、窗口或内联框架的实际名称外,还可以使用一些特殊的关键字。

_self

将响应加载到与包含表单的浏览上下文相同的浏览上下文。这将用接收到的数据替换当前文档。这是未指定时使用的默认值。

_blank

将响应加载到一个新的、未命名的浏览上下文。这通常是与当前文档相同的窗口中的一个新标签页,但可能会根据用户代理的配置而有所不同。

_parent

将响应加载到当前浏览上下文的父浏览上下文。如果没有父上下文,则其行为与_self相同。

_top

将响应加载到顶层浏览上下文;这是当前上下文的顶层祖先浏览上下文。如果当前上下文是顶层上下文,则其行为与_self相同。

此属性也适用于<input type="image"><button>元素。

使用提交按钮

<input type="submit">按钮用于提交表单。如果你想创建一个自定义按钮并使用 JavaScript 自定义其行为,你需要使用<input type="button">,或者更好的是,使用<button>元素。

如果你选择使用<button>元素来创建表单中的按钮,请记住这一点:如果<button><form>内,该按钮将被视为“提交”按钮。因此,你应该养成明确指定哪个按钮是提交按钮的习惯。

一个简单的提交按钮

我们将从创建一个带有简单提交按钮的表单开始。

html
<form>
  <div>
    <label for="example">Let's submit some text</label>
    <input id="example" type="text" name="text" />
  </div>
  <div>
    <input type="submit" value="Send" />
  </div>
</form>

它渲染如下。

尝试在文本字段中输入一些文本,然后提交表单。

提交后,数据名称/值对将发送到服务器。在这种情况下,字符串将是text=usertext,其中“usertext”是用户输入的文本,已编码以保留特殊字符。数据提交的位置和方式取决于<form>的配置;有关更多详细信息,请参阅发送表单数据

向提交按钮添加键盘快捷键

键盘快捷键,也称为访问键和键盘等效项,允许用户使用键盘上的一个键或几个键的组合来触发按钮。要向提交按钮添加键盘快捷键(就像对任何<input>添加快捷键一样,只要有意义),你可以使用accesskey全局属性。

在这个示例中,s被指定为访问键(你需要按下s加上你的浏览器/操作系统组合的特定修饰键)。为了避免与用户代理自身的键盘快捷键发生冲突,访问键的修饰键与主机计算机上的其他快捷键的修饰键不同。有关更多详细信息,请参阅accesskey

以下是之前示例添加了s访问键的情况。

html
<form>
  <div>
    <label for="example">Let's submit some text</label>
    <input id="example" type="text" name="text" />
  </div>
  <div>
    <input type="submit" value="Send" accesskey="s" />
  </div>
</form>

例如,在 Mac 上的 Firefox 中,按下Control-Option-S将触发“发送”按钮,而 Windows 上的 Chrome 使用Alt+S

上面示例的问题是,用户将不知道访问键是什么!这尤其如此,因为修饰键通常是非标准的,以避免冲突。在构建网站时,务必以不会干扰网站设计的方式提供此信息(例如,提供一个易于访问的链接,指向有关网站访问键的信息)。向按钮添加工具提示(使用title属性)也有帮助,虽然这并不是一个完整的可访问性解决方案。

禁用和启用提交按钮

要禁用提交按钮,请在其上指定disabled属性,如下所示。

html
<input type="submit" value="Send" disabled />

你可以通过将disabled设置为truefalse来在运行时启用和禁用按钮;在 JavaScript 中,这看起来像btn.disabled = truebtn.disabled = false

注意:有关启用和禁用按钮的更多想法,请参阅<input type="button">页面。

验证

提交按钮不参与约束验证;它们没有要约束的实际值。

示例

我们在上面包含了简单的示例。关于提交按钮,真的没有什么可说的了。这种类型的控件有时被称为“简单按钮”是有原因的。

技术摘要

用作按钮标签的字符串
事件 click
支持的通用属性 typevalue
IDL 属性 value
DOM 接口

HTMLInputElement

方法
隐式 ARIA 角色 button

规范

规范
HTML 标准
# submit-button-state-(type=submit)

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅