Baseline Widely available *
"password"
ç±»åç <input>
å
ç´ å¯ä»¥è®©ç¨æ·æ´å å®å
¨çè¾å
¥å¯ç ã
è¿ä¸ªå ç´ æ¯ä½ä¸ºåè¡çº¯ææ¬ç¼è¾å¨æ§ä»¶åç°çï¼å ¶ä¸ææ¬è¢«é®è½ï¼æ æ³è¯»åãé常éè¿ç¨è¯¸å¦æå·ï¼â*âï¼æç¹ï¼ââ¢âï¼çç¬¦å·æ¿æ¢æ¯ä¸ªå符æ¥å®ç°ãæ ¹æ®ç¨æ·çç¨æ·ä»£çåæä½ç³»ç»ä¸åï¼æ¾ç¤ºçå符ä¹ä¼ä¸åã
å°è¯ä¸ä¸<div>
<label for="username">Username:</label>
<input type="text" id="username" name="username" />
</div>
<div>
<label for="pass">Password (8 characters minimum):</label>
<input type="password" id="pass" name="password" minlength="8" required />
</div>
<input type="submit" value="Sign in" />
label {
display: block;
}
input[type="submit"],
label {
margin-top: 1rem;
}
è¾å ¥è¿ç¨çå ·ä½ç»èå¯è½å æµè§å¨èå¼ãä¾å¦ï¼æçæµè§å¨ç»å¸¸å¨éèå®ä¹åæ¾ç¤ºé®å ¥çåç¬¦ä¸æ®µæ¶é´ï¼èå¦å¤ä¸äºæµè§å¨å è®¸ç¨æ·åæ¢æææ¾ç¤ºæ¨¡å¼ãç§»å¨ç«¯è®¾å¤ä¸æ£æ¥æ¯å¦è¾å ¥äºé¢æçå¯ç é常æ¯è¾å°é¾ï¼èè¿ä¸¤ç§æºå¶é½è½è§£å³è¿ä¸ªé®é¢ã
夿³¨ï¼ 任使¶åå¯ç çææä¿¡æ¯ç表åï¼ä¾å¦ç»å½è¡¨æ ¼ï¼é½åºéè¿ HTTPS æä¾ãè®¸å¤æµè§å¨ç°å¨é½å®ç°äºè¦åä¸å®å ¨ç»å½è¡¨åçæºå¶ï¼åé ä¸å®å ¨çå¯ç ã
å¼value
屿§å
å«äºç¨äºè¾å
¥å¯ç çææ¬ç¼è¾æ§ä»¶çå½åå
容çå符串ãå¦æç¨æ·è¿æ²¡æè¾å
¥ä»»ä½å
容ï¼åæ¤å¼ä¸ºç©ºå符串ï¼""
ï¼ã妿æå®äº required
屿§ï¼åå¯ç ç¼è¾æ¡å¿
é¡»å
å«ä¸ä¸ªéç©ºçææå¼ã
妿æå®äº pattern
屿§ï¼å password
ä¸çå
å®¹åªæéè¿éªè¯æææï¼åè§éªè¯ä¸è以è·å¾æ´å¤ä¿¡æ¯ã
夿³¨ï¼ æ¢è¡ï¼U+000Aï¼åå车ï¼U+000Dï¼ç¬¦ä¸å
è®¸å¨ password
ä¸åºç°ãå½å¯¹å¯ç æ§ä»¶è®¾ç½®å¼æ¶ï¼æ¢è¡åå车符é½ä¼ä»å¼ä¸å é¤ã
é¤äºææ <input>
å
ç´ æ¯æç屿§å¤ï¼å¯ç åæ®µè¾å
¥è¿æ¯æä»¥ä¸å±æ§ï¼
ç¨æ·å¯ä»¥è¾å
¥å°å¯ç è¾å
¥æ¡ä¸çæå¤§å符æ°ï¼ä»¥ UTF-16 代ç åå
为åä½ï¼ãå¿
须为大äºçäº 0 çæ´æ°ãå¦ææªæå® maxlength
ææå®äºæ æçå¼ï¼åå¯ç è¾å
¥æ¡å°æ²¡ææå¤§é¿åº¦ãè¿ä¸ªå¼ä¹å¿
须大äºçäº minlength
çå¼ã
å¦æææ¬æ¡ä¸çå符æ°å¤§äº maxlength
UTF-16 ç¼ç åå
é¿åº¦ï¼åè¾å
¥å°æ æ³éè¿çº¦æéªè¯ã
ç¨æ·å¯ä»¥è¾å
¥å°å¯ç è¾å
¥æ¡ä¸çæå°å符æ°ï¼ä»¥ UTF-16 代ç åå
为åä½ï¼ã该å¼å¿
é¡»æ¯å°äºçäº maxlength
æå®çå¼çéè´æ´æ°å¼ãå¦ææªæå® minlength
ææå®äºæ æçå¼ï¼åå¯ç è¾å
¥å°æ²¡ææå°é¿åº¦ã
妿è¾å
¥å°å段ä¸çææ¬çé¿åº¦å°äº minlength
UTF-16 代ç åå
çé¿åº¦ï¼åè¾å
¥å°æ æ³éè¿çº¦æéªè¯ã
妿æå®äº pattern
屿§ï¼ä¸ºäºä½¿ value
éè¿çº¦æéªè¯ï¼å¿
é¡»æ»¡è¶³è¯¥å±æ§ç»å®çæ£å表达å¼ãå®å¿
é¡»æ¯ RegExp
ç±»åçææ JavaScript æ£å表达å¼ï¼å¹¶ä¸å·²å¨æä»¬çæ£åè¡¨è¾¾å¼æåä¸è¿è¡äºè¯´æï¼å¨ç¼è¯æ£åè¡¨è¾¾å¼æ¶æå®äº 'u'
æ å¿ï¼å æ¤è¯¥æ¨¡å¼è¢«è§ä¸º Unicode 代ç ç¹çåºåï¼è䏿¯ ASCIIãæ¨¡å¼ææ¬å¨å´æ éæå®æ£ææ ã
å¦ææ²¡ææå®æ¨¡å¼ï¼ææå®äºæ æç模å¼ï¼åä¸ä¼åºç¨ä»»ä½æ£å表达å¼ï¼ä¸è¯¥å±æ§å°è¢«å®å ¨å¿½ç¥ã
夿³¨ï¼ ä½¿ç¨ title
屿§æ¥æå®å¤§å¤æ°æµè§å¨å°ä½ä¸ºå·¥å
·æç¤ºçææ¬ï¼ä»¥è§£éå¹é
该模å¼çè¦æ±æ¯ä»ä¹ãè¿åºè¯¥å¨éè¿å
æ¬å
¶ä»è§£éæ§çææ¬ã
强ç建议å¨å¯ç è¾å ¥ä¸ä½¿ç¨æ¨¡å¼ï¼ä»¥å¸®å©ç¡®ä¿ç¨æ·éæ©åä½¿ç¨ææçå¯ç ï¼å¹¶ä½¿ç¨å¹¿æ³çå符类å«ãéè¿ä¸ä¸ªæ¨¡å¼ï¼ä½ å¯ä»¥è§å®å¤§å°åè§åãè¦æ±ä½¿ç¨ä¸äºæ°åå/ææ ç¹ç¬¦å·ï¼ççãåé éªè¯ä¸è以è·å详ç»è¯´æå示ä¾ã
placeholderplaceholder
屿§æ¯ä¸ä¸ªå符串ï¼å¯åç¨æ·æä¾æå
³è¯¥å段ä¸éè¦ä»ä¹æ ·çä¿¡æ¯çç®çæç¤ºãå®åºè¯¥æ¯ä¸ä¸ªåè¯æçè¯æ¥è¯´æé¢æçæ°æ®ç±»åï¼è䏿¯è¯´ææ§æ¶æ¯ãææ¬ä¸ä¸å¾å
å«åè½¦ç¬¦ææ¢è¡ç¬¦ã
妿æ§ä»¶çå å®¹å ·ææ¹åï¼LTR æ RTLï¼ï¼ä½éè¦ä»¥ç¸åçæ¹åæ¾ç¤ºå ä½ç¬¦ï¼åå¯ä»¥ä½¿ç¨ Unicode ååç®æ³æ¥æ ¼å¼åå符ï¼ä»èè¦çåæå ä½ç¬¦çæ¹åï¼è¯·åè§å¦ä½é对ååææ¬ä½¿ç¨ Unicode æ§å¶ç¬¦è·åæ´å¤ä¿¡æ¯ã
夿³¨ï¼ å°½å¯è½é¿å
ä½¿ç¨ placeholder
屿§ãå®å¨è¯ä¹ä¸æ²¡æå
¶ä»è§£é表åçæ¹å¼æç¨ï¼å¹¶ä¸å¯è½å¯¼è´å
容åºç°æå¤çé®é¢ã请åè§ <input>
æ ç¾ä»¥è·åæ´å¤ä¿¡æ¯ã
ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨ï¼åè¡¨ç¤ºè¯¥åæ®µä¸è½ç±ç¨æ·ç¼è¾ã使¯ï¼ä»å¯ä»¥éè¿ JavaScript 代ç ç´æ¥è®¾ç½® HTMLInputElement.value
ç value
屿§æ¥æ´æ¹ã
夿³¨ï¼ å 为åªè¯»å段ä¸è½æå¼ï¼æä»¥ required
对æå®äº readonly
屿§çè¾å
¥æ²¡æä»»ä½å½±åã
size
屿§æ¯ä¸ä¸ªæ°åå¼ï¼æç¤ºè¾å
¥åæ®µåºæå¤å°ä¸ªå符宽ã该å¼å¿
é¡»æ¯ä¸ä¸ªå¤§äºé¶çæ°åï¼é»è®¤å¼æ¯ 20ãç±äºå符宽度åä¸ç¸åï¼è¿å¯è½æ¯ä¹å¯è½ä¸æ¯ç²¾ç¡®çï¼ä¸åºä¾èµäºæ¤ï¼ç»æè¾å
¥å¯è½æ¯æå®çåç¬¦æ°æ´çªææ´å®½ï¼è¿åå³äºå符ååä½ï¼ä½¿ç¨ç font
设置ï¼ã
è¿å¹¶ä¸éå¶ç¨æ·å¯ä»¥å¨è¯¥å段ä¸è¾å
¥å¤å°ä¸ªå符ï¼ä»
è½æå®ä¸æ¬¡å¯ä»¥çå°å¤å°ä¸ªãè¦è®¾ç½®è¾å
¥æ°æ®é¿åº¦çä¸éï¼è¯·ä½¿ç¨ maxlength
屿§ã
å¯ç è¾å ¥æ¡ç工使¹å¼é常ä¸å ¶ä»ææ¬è¾å ¥æ¡ä¸æ ·ï¼ä¸»è¦åºå«å¨äºé®æ¡å 容ï¼ä»¥é²æ¢ç¨æ·éè¿ç人读åå¯ç ã
ä¸ä¸ªç®åçå¯ç è¾å ¥æ¡å¨è¿éï¼æä»¬çå°äºæåºæ¬çå¯ç è¾å
¥ï¼å¹¶ä½¿ç¨äº <label>
å
ç´ å建äºç¸åºçæ ç¾ã
<label for="userPassword">å¯ç ï¼</label>
<input id="userPassword" type="password" />
å
许èªå¨è¡¥å
¨
为äºè®©ç¨æ·çå¯ç 管çå¨èªå¨è¾å
¥å¯ç ï¼å¯ä»¥æå® autocomplete
屿§ã对äºå¯ç è¾å
¥æ¡ï¼é常æ¯ä¸åå¼ä¹ä¸ï¼
on
å
许æµè§å¨æå¯ç 管çå¨èªå¨å¡«åå¯ç åæ®µãè¿ä¸åä½¿ç¨ current-password
æ new-password
飿 ·æä¾ä¿¡æ¯ã
off
ä¸å 许æµè§å¨æå¯ç 管çå¨èªå¨å¡«åå¯ç åæ®µã请注æï¼æäºè½¯ä»¶ä¼å¿½ç¥æ¤å¼ï¼å 为å®éå¸¸ä¼æå®³ç¨æ·ç»´æ¤å®å ¨å¯ç æä½çè½åã
current-password
å
许æµè§å¨æå¯ç 管çå¨è¾å
¥ç½ç«çå½åå¯ç ãè¿æä¾äºæ¯ on
æ´å¤çä¿¡æ¯ï¼å 为å®å
许æµè§å¨æå¯ç 管çå¨èªå¨å¨è¯¥å段ä¸è¾å
¥å½åå·²ç¥çç½ç«å¯ç ï¼ä½ä¸å»ºè®®æ°å¯ç ã
new-password
å 许æµè§å¨æå¯ç 管çå¨èªå¨è¾å ¥ç½ç«çæ°å¯ç ï¼è¿ç¨äºâæ´æ¹å¯ç âåâæ°ç¨æ·â表åï¼å¨è¯¥å段询é®ç¨æ·æ°å¯ç ãæ°å¯ç å¯è½ä»¥å¤ç§æ¹å¼çæï¼å ·ä½åå³äºä½¿ç¨çå¯ç 管çå¨ãå®å¯è½åªæ¯å¡«åæ°ç建议å¯ç ï¼æè å®å¯è½ä¼åç¨æ·æ¾ç¤ºå建å¯ç ççé¢ã
<label for="userPassword">å¯ç ï¼</label>
<input id="userPassword" type="password" autocomplete="current-password" />
让å¯ç å¿
é¡»è¾å
¥
为äºåç¥ç¨æ·çæµè§å¨å¨æäº¤è¡¨ååï¼å¯ç åæ®µå¿
é¡»æ¥æä¸ä¸ªåæ³çå¼ï¼åªè¦æå®å¸å°å±æ§ required
å°±å¯ä»¥äºã
<label for="userPassword">å¯ç ï¼</label>
<input id="userPassword" type="password" required />
<input type="submit" value="Submit" />
æå®è¾å
¥æ¨¡å¼
å¦æä½ æ¨èï¼æè¦æ±ï¼çå¯ç è¯æ³è§åä¼å æ¿ä»£çæåè¾å
¥æ¥å£åçï¼ä½ å¯ä»¥ä½¿ç¨ inputmode
屿§æ¥è¯·æ±ä¸ä¸ªç¹å®çè¾å
¥æ¨¡å¼ãè¿æ¹é¢æææ¾çç¨ä¾æ¯å¦æå¯ç è¢«è¦æ±æ¯æ°åçï¼å¦ PINï¼ãæ¤æ¶ï¼å¸¦æèæé®ççç§»å¨è®¾å¤å¯è½ä¼éæ©åæ¢å°æ°åé®çå¸å±ï¼è䏿¯å
¨é®çï¼ä»¥ä½¿è¾å
¥å¯ç æ´å®¹æã妿 PIN ç æ¯ä¸æ¬¡æ§ä½¿ç¨çï¼è¯·å° autocomplete
屿§è®¾ç½®ä¸º off
æ one-time-code
ï¼ä»¥æç¤ºå®ä¸è¢«ä¿åã
<label for="pin">PINï¼</label>
<input id="pin" type="password" inputmode="numeric" />
设置é¿åº¦è¦æ±
ä½ ä»ç¶å¯ä»¥ä½¿ç¨ minlength
å maxlength
屿§æ¥è®¾å®å¯ç çæå°åæå¤§å¯æ¥åé¿åº¦ãæ¤ç¤ºä¾éè¿æå®ç¨æ·ç PIN å¿
é¡»è³å°ä¸º 4 ä¸ä¸è¶
è¿ 8 使¥æ©å±åä¸ä¸ªç¤ºä¾ãè¿é使ç¨äº size
屿§æ¥ç¡®ä¿å¯ç è¾å
¥æ§ä»¶ç宽度为 8 个å符ã
<label for="pin">PINï¼</label>
<input
id="pin"
type="password"
inputmode="numeric"
minlength="4"
maxlength="8"
size="8" />
éä¸å符
ä¸å
¶ä»ææ¬è¾å
¥æ§ä»¶ä¸æ ·ï¼ä½ å¯ä»¥ä½¿ç¨ select()
æ¹æ³æ¥éæ©å¯ç åæ®µçææå符ã
<label for="userPassword">å¯ç ï¼</label>
<input id="userPassword" type="password" size="12" />
<button id="selectAll">å
¨é</button>
JavaScript
document.getElementById("selectAll").onclick = () => {
document.getElementById("userPassword").select();
};
ç»æ
ä½ è¿å¯ä»¥ä½¿ç¨ selectionStart
å selectionEnd
æ¥è·åï¼æè®¾ç½®ï¼å½åéä¸çå符èå´ï¼ä»¥å selectionDirection
æ¥äºè§£éæ©åçå¨åªä¸ªæ¹åï¼æå°è¢«æ©å±ï¼åå³äºä½ çå¹³å°ï¼è§å
¶ææ¡£çè§£éï¼ãç¶èï¼èèå°ææ¬è¢«é®æ¡ï¼è¿äºçç¨å¤å°±æäºæéäºã
å¦æä½ çåºç¨ç¨åºå¯¹è¾å
¥å¯ç çå®é
å
容æå符ééå¶æä»»ä½å
¶ä»è¦æ±ï¼ä½ å¯ä»¥ä½¿ç¨ pattern
屿§æ¥å»ºç«ä¸ä¸ªæ£å表达å¼ï¼ç¨æ¥èªå¨ç¡®ä¿ä½ çå¯ç 符åè¿äºè¦æ±ã
å¨è¿ä¸ªç¤ºä¾ä¸ï¼åªæå å«è³å°å个åä¸è¶ è¿å «ä¸ªåå è¿å¶æ°åçå¼ææ¯ææçã
<label for="hexId">åå
è¿å¶ IDï¼</label>
<input
id="hexId"
type="password"
pattern="[0-9a-fA-F]{4,8}"
title="è¾å
¥å
å« 4~8 个åå
è¿å¶å符ç ID"
autocomplete="new-password" />
ç¤ºä¾ ç³è¯·ç¤¾ä¼å®å
¨å·ç
æ¤ç¤ºä¾ä» æ¥å䏿æçç¾å½ç¤¾ä¼å®å ¨å·ç æ ¼å¼ç¸å¹é çè¾å ¥ãè¿äºç¨äºç¾å½ç¨å¡åè¯å«ç®ççæ°åçæ ¼å¼ä¸ºâ123-45-6789âãè¿åå¨é对æ¯ä¸ªç»ä¸å 许çå¼çåç§è§åã
HTML<label for="ssn">SSNï¼</label>
<input
type="password"
id="ssn"
inputmode="numeric"
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">å¼ï¼</label>
<span id="current"></span>
æ¤ç¤ºä¾ä½¿ç¨äº pattern
屿§ï¼éå¶äºè¾å
¥ä¸ºä¸ä¸ªåæ³ç社ä¼å®å
¨å·ç ã徿¾ç¶ï¼è¿ä¸ªæ£å表达å¼å¹¶ä¸è½ä¿è¯ææç SSNï¼å 为æä»¬æ²¡æè®¿é®å°ç¤¾ä¼ä¿éå±çæ°æ®åºï¼ï¼ä½å®ç¡®å®ä¿è¯è¾å
¥çå¼å¯è½æ¯åæ³å¼ä¹ä¸ãå®é常ä¼é¿å
æ æçå¼ãæ¤å¤ï¼å®å
许ä¸ç»æ°åç±ç©ºæ ¼ãçå线ï¼â-âï¼åéï¼æè
没æåé符ã
inputmode
被设置为 numeric
ï¼ä»¥é¼å±æèæé®çç设å¤åæ¢å°æ°åé®çå¸å±ï¼ä»¥æ¹ä¾¿è¾å
¥ãminlength
å maxlength
屿§åå«è®¾ç½®ä¸º 9 å 12ï¼ä»¥è¦æ±å¼çé¿åº¦è³å°ä¸º 9 个ï¼ä¸è¶
è¿ 12 个å符ï¼åè
卿°åç»ä¹é´æ²¡æåé符ï¼åè
åæï¼ãrequired
屿§è¢«ç¨æ¥è¡¨ç¤ºè¯¥æ§ä»¶å¿
é¡»æä¸ä¸ªå¼ãæåï¼autocomplete
被设置为 off
ï¼ä»¥é¿å
å¯ç 管çå¨åä¼è¯æ¢å¤åè½è¯å¾è®¾ç½®å
¶å¼ï¼å ä¸ºè¿æ ¹æ¬å°±ä¸æ¯ä¸ä¸ªå¯ç ã
è¿åªæ¯ä¸äºç®åç代ç ï¼ç¨äºå¨å±å¹ä¸æ¾ç¤ºè¾å
¥ç SSNï¼ä»¥ä¾¿ä½ å¯ä»¥çå°å®ãæ¾ç¶è¿ä¼ç ´åå¯ç åæ®µçç®çï¼ä½å®æå©äºè¯éª pattern
ã
const ssn = document.getElementById("ssn");
const current = document.getElementById("current");
ssn.oninput = (event) => {
current.textContent = ssn.value;
};
ç»æ ææ¯æ»ç» è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4