<input type="text">
类型为text
的<input>
元素创建基本的单行文本字段。
试一试
值
value
属性是一个字符串,包含输入到文本字段中的当前文本值。您可以使用 JavaScript 中的HTMLInputElement
value
属性检索此值。
let theText = myTextInput.value;
如果输入没有设置验证约束(有关详细信息,请参阅验证),则该值可能为空字符串(""
)。
其他属性
除了适用于所有<input>
元素(无论其类型如何)的属性之外,文本输入还支持以下属性。
list
list 属性的值是位于同一文档中的<datalist>
元素的id
。该<datalist>
提供了一个预定义值列表,以建议用户为此输入使用。列表中与type
不兼容的任何值都不会包含在建议选项中。提供的这些值只是建议,不是强制要求:用户可以选择此预定义列表中的值,也可以提供其他值。
maxlength
用户可以在text
输入中输入的最大字符串长度(以 UTF-16 代码单元计)。这必须是 0 或更高的整数值。如果未指定maxlength
或指定了无效值,则text
输入没有最大长度。此值还必须大于或等于minlength
的值。
如果字段的文本值的长度大于maxlength
UTF-16 代码单元,则输入将无法通过约束验证。仅当用户更改值时才会应用约束验证。
minlength
用户可以在text
输入中输入的最小字符串长度(以 UTF-16 代码单元计)。这必须是非负整数值,并且小于或等于maxlength
指定的值。如果未指定minlength
或指定了无效值,则text
输入没有最小长度。
如果输入到字段中的文本长度少于minlength
UTF-16 代码单元,则输入将无法通过约束验证。仅当用户更改值时才会应用约束验证。
pattern
如果指定了pattern
属性,则它是一个正则表达式,输入的value
必须匹配该正则表达式才能通过约束验证。它必须是一个有效的 JavaScript 正则表达式,与RegExp
类型使用的正则表达式相同,并在我们的正则表达式指南中进行了介绍;编译正则表达式时会指定'u'
标志,以便将模式视为 Unicode 代码点的序列,而不是ASCII。模式文本周围不应指定正斜杠。
如果未指定或指定了无效的模式,则不应用任何正则表达式,并且完全忽略此属性。
注意:使用title
属性来指定大多数浏览器将显示为工具提示的文本,以解释匹配模式的要求。您还应该在附近包含其他说明性文本。
有关更多详细信息和示例,请参阅指定模式。
placeholder
placeholder
属性是一个字符串,它向用户提供一个简短的提示,说明在该字段中期望哪种信息。它应该是一个单词或短语,演示预期的数据类型,而不是说明性消息。文本不得包含回车符或换行符。
如果控件的内容具有一个方向性(LTR或RTL),但需要以相反的方向性显示占位符,则可以使用 Unicode 双向算法格式化字符来覆盖占位符中的方向性;有关更多信息,请参阅如何使用 Unicode 控件进行双向文本。
注意:如果可以,请避免使用placeholder
属性。它在语义上不如其他解释表单的方式有用,并且可能导致内容出现意外的技术问题。有关更多信息,请参阅<input>
可访问性问题。
readonly
如果存在,则此布尔属性表示用户无法编辑此字段。但是,JavaScript 代码可以通过直接设置HTMLInputElement
value
属性来更改其value
。
注意:由于只读字段不能具有值,因此required
对也指定了readonly
属性的输入没有任何影响。
size
spellcheck
非标准属性
以下非标准属性在某些浏览器上也可用。作为一般规则,除非无法避免,否则应避免使用它们。
autocorrect
使用文本输入
基本示例
设置占位符
您可以通过使用 placeholder
属性在文本输入中提供一个有用的占位符,该占位符可以提供有关输入内容的提示。请查看以下示例
<form>
<div>
<label for="uname">Choose a username: </label>
<input
type="text"
id="uname"
name="name"
placeholder="Lower case, all one word" />
</div>
<div>
<button>Submit</button>
</div>
</form>
您可以看到下面是如何渲染占位符的
占位符通常以比元素的前景色更浅的颜色呈现,并且当用户开始在字段中输入文本(或每当通过设置其 value
属性以编程方式设置字段的值时)时,会自动消失。
物理输入元素大小
可以使用 size
属性控制输入框的物理大小。使用它,您可以指定文本输入一次可以显示的字符数。这会影响元素的宽度,让您能够以字符而不是像素为单位指定宽度。例如,在此示例中,输入宽度为 30 个字符
<form>
<div>
<label for="uname">Choose a username: </label>
<input
type="text"
id="uname"
name="name"
placeholder="Lower case, all one word"
size="30" />
</div>
<div>
<button>Submit</button>
</div>
</form>
验证
类型为 text
的 <input>
元素没有应用任何自动验证(因为基本文本输入需要能够接受任何任意字符串),但有一些客户端验证选项可用,我们将在下面讨论。
注意: HTML 表单验证**不是**确保输入数据格式正确的服务器脚本的替代品。对于某人调整 HTML 以允许他们绕过验证或完全删除它来说,这太容易了。某人还可以完全绕过您的 HTML 并直接将数据提交到您的服务器。如果您的服务器端代码未能验证它接收到的数据,则当不正确格式的数据(或大小过大、类型错误等数据)输入到您的数据库时,可能会发生灾难。
关于样式的说明
有一些有用的伪类可用于为表单元素设置样式,以帮助用户查看其值何时有效或无效。它们是 :valid
和 :invalid
。在本节中,我们将使用以下 CSS,它将在包含有效值的输入旁边放置一个复选标记(勾号),并在包含无效值的输入旁边放置一个叉号(X)。
div {
margin-bottom: 10px;
position: relative;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "✖";
padding-left: 5px;
}
input:valid + span::after {
position: absolute;
content: "✓";
padding-left: 5px;
}
此技术还需要在表单元素之后放置一个 <span>
元素,该元素充当图标的容器。这是必要的,因为某些浏览器上的一些输入类型不能很好地显示直接放置在其后面的图标。
使输入成为必填项
您可以使用 required
属性作为一种简单的方法,在允许提交表单之前,使输入值成为必填项
<form>
<div>
<label for="uname">Choose a username: </label>
<input type="text" id="uname" name="name" required />
<span class="validity"></span>
</div>
<div>
<button>Submit</button>
</div>
</form>
呈现效果如下
如果您尝试在未输入任何搜索词的情况下提交表单,浏览器将显示一条错误消息。
输入值长度
您可以使用 minlength
属性指定输入值的最小长度(以字符为单位);类似地,使用 maxlength
设置输入值的最大长度(以字符为单位)。
以下示例要求输入的值长度为 4-8 个字符。
<form>
<div>
<label for="uname">Choose a username: </label>
<input
type="text"
id="uname"
name="name"
required
size="10"
placeholder="Username"
minlength="4"
maxlength="8" />
<span class="validity"></span>
</div>
<div>
<button>Submit</button>
</div>
</form>
呈现效果如下
如果您尝试提交少于 4 个字符的表单,将收到相应的错误消息(浏览器之间有所不同)。如果您尝试输入超过 8 个字符,浏览器将不允许您这样做。
注意:如果您指定了 minlength
但未指定 required
,则输入被视为有效,因为用户不需要指定值。
指定模式
您可以使用 pattern
属性指定输入值必须匹配的正则表达式,才能被视为有效(请参阅 根据正则表达式验证,了解有关使用正则表达式验证输入的简单速成课程)。
以下示例将值限制为 4-8 个字符,并要求它仅包含小写字母。
<form>
<div>
<label for="uname">Choose a username: </label>
<input
type="text"
id="uname"
name="name"
required
size="45"
pattern="[a-z]{4,8}" />
<span class="validity"></span>
<p>Usernames must be lowercase and 4-8 characters in length.</p>
</div>
<div>
<button>Submit</button>
</div>
</form>
呈现效果如下
示例
您可以在我们的 第一个 HTML 表单 和 如何构建 HTML 表单 文章中看到文本输入在上下文中使用的良好示例。
技术摘要
值 | 表示文本字段中包含的文本的字符串。 | |
事件 |
change 和 input |
|
支持的常用属性 |
autocomplete 、list 、maxlength 、minlength 、pattern 、placeholder 、readonly 、required 和 size |
|
IDL 属性 | list 、value |
|
DOM 接口 | ||
方法 |
select() 、setRangeText() 和 setSelectionRange() 。 |
|
隐式 ARIA 角色 | 无 list 属性:textbox |
有 list 属性:combobox |
规范
规范 |
---|
HTML 标准 # text-(type=text)-state-and-search-state-(type=search) |
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参阅
- HTML 表单
<input>
及其所基于的HTMLInputElement
接口。<input type="search">
<textarea>
:多行文本输入- CSS 属性的兼容性