input type="password"
入门过程的具体细节可能因浏览器而异; 移动设备,例如,经常显示键入的字符片刻之前,让用户确定他们按下了他们打算按的键; 这是有用的,因为键的小尺寸和容易的错误的一个可以按下,特别是在虚拟键盘上。
任何涉及密码等敏感信息的形式(例如登录表单)应通过HTTPS提供; Firefox现在实现了多种机制来警告不安全的登录表单 - 请参阅不安全的密码。其他浏览器也正在实施类似的机制。
<input id="userPassword" type="password">
值 | 表示密码的DOMString,或者为空 |
---|---|
活动 | 改变和输入 |
支持的通用属性 | 自动完成,输入模式,最大长度,最小长度,模式,占位符,只读,必需和大小 |
IDL属性 | selectionStart,selectionEnd,selectionDirection和value |
方法 | select(),setRangeText()和setSelectionRange() |
值
如果pattern
指定了该属性,"password"
则只有该值通过验证时才会将控件的内容视为有效; 请参阅验证以获取更多信息。
使用密码输入
密码输入框通常与其他文本输入框一样工作; 主要区别在于内容的模糊,以防止用户附近的人阅读密码。
一个简单的密码输入
在这里我们看到了最基本的密码输入,使用<label>
元素建立了一个标签。
<label for="userPassword">Password:</label>
<input id="userPassword" type="password">
允许自动完成
要允许用户的密码管理器自动输入密码,请指定autocomplete
属性。对于密码,通常应该是以下之一:
"on"
允许浏览器或密码管理器自动填写密码字段。这不像使用其中的任何一个"current-password"
或更多"new-password"
。
"off"
不要让浏览器或密码管理器自动填写密码字段。请注意,某些软件会忽略此值,因为这对用户维护安全密码操作的能力通常是有害的。
"current-password"
允许浏览器或密码管理器输入网站的当前密码。这提供了比这更多的信息"on"
,因为它允许浏览器或密码管理器自动输入当前网站的当前密码,而不是建议一个新的密码。
"new-password"
允许浏览器或密码管理器为网站自动输入新密码;这是用于“更改密码”和“新用户”表单,在现场询问用户一个新的密码。新密码可能以各种方式生成,具体取决于正在使用的密码管理器。它可能只是填写一个新的建议密码,或者可能会向用户显示一个创建密码的界面。
<label for="userPassword">Password:</label>
<input id="userPassword" type="password" autocomplete="current-password">
使密码成为强制性的
为了告诉用户浏览器在提交表单之前密码字段必须有一个有效的值,只需指定布尔required
属性。
<label for="userPassword">Password:</label>
<input id="userPassword" type="password" required>
指定一个输入模式
如果您推荐的(或必需的)密码语法规则将从标准键盘的替代文本输入界面中受益,则可以使用该inputmode
属性来请求特定的输入界面。最明显的用例是密码必须是数字(如PIN)。例如,带有虚拟键盘的移动设备可能会选择切换到数字键盘布局而不是全键盘,以便更轻松地输入密码。
<label for="pin">PIN:</label>
<input id="pin" type="password" inputmode="numeric">
设置长度要求
<label for="pin">PIN:</label>
<input id="pin" type="password" inputmode="numeric" minlength="4"
maxlength="8" size="8">
选择文字
与其他文本输入控件一样,您可以使用该select()
方法来选择密码字段中的所有文本。
HTML
<label for="userPassword">Password</label>
<input id="userPassword" type="password" size="12">
<button id="selectAll">Select All</button>
JavaScript
document.getElementById("selectAll").onclick = function(event) {
document.getElementById("userPassword").select();
}
Result
您还可以使用selectionStart
和selectionEnd
获取(或设置)当前选择的控件中的哪些字符范围,以及selectionDirection
知道哪个方向选择发生(或将被扩展,取决于您的平台;请参阅其文档以获得解释)。但是,鉴于案文模糊不清,这些案文的用处有限。
验证
如果您的应用程序对输入的密码的实际内容有字符集限制或任何其他要求,您可以使用该pattern
属性建立一个正则表达式来自动确保您的密码满足这些要求。
在这个例子中,只有由至少四个和不超过八个十六进制数字组成的值是有效的。
<label for="hexId">Hex ID:</label>
<input id="hexId" type="password" pattern="[0-9a-fA-F]{4,8}"
title="Enter an ID consisting of 4-8 hexadecimal digits">
disabled
此布尔属性指示密码字段不可用于交互。此外,禁用的字段值不会与表单一起提交。
Examples
请求社会安全号码
此示例仅接受与有效的美国社会安全号码格式相匹配的输入。这些用于美国税收和身份识别的数字的形式是“123-45-6789”。也存在针对每个组中允许的值的分类规则。
HTML
<label for="ssn">SSN:</label>
<input type="password" id="ssn" inputmode="number" minlength="9" maxlength="12"
pattern="(?!000)([0-6]\d{2}|7([0-6]\d|7[012]))([ -])?(?!00)\d\d\3(?!0000)\d{4}"
required autocomplete="off">
<br>
<label for="ssn">Value:</label>
<span id="current"></span>
这使用一个pattern
将输入的值限制为代表合法Socal安全号码的字符串。显然,这个正则表达式不能保证有效的SSN(因为我们没有访问社会安全管理局的数据库),但确实可以确保这个数字是一个; 它通常会避免无效的值。另外,它允许三组数字由一个空格,一个短划线(“ - ”)或什么也不分开。
将inputmode
被设置为"number"
鼓励使用虚拟键盘的设备切换到数字键盘的布局更容易进入。的minlength
和maxlength
属性被设置为9和12,分别为要求该值至少为9,并且不超过12个字符(前者没有数字的基团和与它们后者之间分离字符)。该required
属性用于表示该控件必须有一个值。最后,autocomplete
设置为"off"
避免密码管理器尝试设置其值,因为这根本不是密码。
JavaScript
这只是一些简单的代码来显示屏幕上输入的SSN,所以你可以看到它。显然,这样做会破坏密码字段的用途,但是对于实验来说是很有帮助的pattern
。
var ssn = document.getElementById("ssn");
var current = document.getElementById("current");
ssn.oninput = function(event) {
current.innerHTML = ssn.value;
}
Result
规范
规范 | 状态 | 评论 |
---|---|---|
WHATWG HTML生活标准该规范中'<input type ='password'>''的定义。 | 生活水平 | 初始定义 |
HTML 5.1该规范中<input type =“password”>“的定义。 | 建议 | 初始定义 |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 1.0 | 1.0 (1.7 or earlier) | 2 | 1.0 | 1.0 |
accesskey | 1.0 | (Yes) | 6 | 1.0 | ? |
autocomplete | 17.0 | 4.0 (2.0) | 5 | 9.6 | 5.2 |
autofocus | 5.0 | 4.0 (2.0) | 10 | 9.6 | 5.0 |
disabled | 1.0 | 1.0 (1.7 or earlier)4 | 6 | 1.0 | 1.0 |
form | 9.0 | 4.0 (2.0) | ? | 10.62 | ? |
formaction | 9.0 | 4.0 (2.0) | 10 | 10.62 | 5.2 |
formenctype | 9.0 | 4.0 (2.0) | 10 | 10.62 | ? |
formmethod | 9.0 | 4.0 (2.0) | 10 | 10.62 | 5.2 |
formnovalidate | 5.01 | 4.0 (2.0) | 10 | 10.62 | ? |
formtarget | 9.0 | 4.0 (2.0) | 10 | 10.62 | 5.2 |
inputmode | No support | No support | No support | No support | No support |
maxlength | 1.0 | 1.0 (1.7 or earlier) | 2 | 1.0 | 1.0 |
minlength | 40.0 | ? | ? | ? | ? |
name | 1.0 | 1.0 (1.7 or earlier) | 2 | 1.0 | 1.0 |
pattern | 5.0 | 4.0 (2.0) | 10 | 9.6 | No support |
placeholder | 10.0 | 4.0 (2.0) | 10 | 11.00 | 5.0 |
readonly | 1.0 | 1.0 (1.7 or earlier) | 62 | 1.0 | 1.0 |
required | 5.0 103 | 4.0 (2.0) | 10 | 9.6 | No support |
size | 1.0 | 1.0 (1.7 or earlier) | 2 | 1.0 | 1.0 |
Crossed out lock in address bar to indicate insecure login page | Implementing something similar | 51 (51) | ? | ? | ? |
Message displayed next to password field to indicate insecure login page, plus autofill disabled | No support | 52 (52) | No support | No support | No support |
Feature | Chrome mobile | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | (Yes) | 4.0 (2.0) | (Yes) | (Yes) | (Yes) |
accesskey | ? | ? | ? | ? | ? |
autocomplete | ? | 4.0 (2.0) | (Yes) | (Yes) | (Yes) |
autofocus | 3.2 | 4.0 (2.0) | ? | (Yes) | ? |
disabled | (Yes) | 4.0 (2.0) | (Yes) | (Yes) | (Yes) |
form | ? | ? | ? | ? | ? |
formaction | ? | 4.0 (2.0) | ? | 10.62 | 5.0 |
formenctype | ? | ? | ? | ? | ? |
formmethod | ? | 4.0 (2.0) | ? | 10.62 | 5.0 |
formnovalidate | ? | 4.0 (2.0) | ? | 10.62 | ? |
formtarget | ? | 4.0 (2.0) | ? | 10.62 | 5.0 |
inputmode | No support | No support | No support | No support | No support |
maxlength | (Yes) | 4.0 (2.0) | (Yes) | (Yes) | (Yes) |
minlength | ? | ? | ? | 27.0 | ? |
name | (Yes) | 4.0 (2.0) | (Yes) | (Yes) | 1.0 |
pattern | ? | 4.0 (2.0) | ? | (Yes) | (Yes) |
placeholder | 2.3 | 4.0 (2.0) | ? | 11.10 | 4 |
required | ? | (Yes) | ? | (Yes) | ? |
size | (Yes) | 4.0 (2.0) | (Yes) | (Yes) | (Yes) |
Crossed out lock in address bar to indicate insecure login page | Implementing something similar | 51.0 (51) | ? | ? | ? |
Message displayed next to password field to indicate insecure login page, plus autofill disabled | No support | 52.0 (52) | No support | No support | No support |
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com