<input>ï¼HTML è¾å ¥å ç´
åºçº¿
广æ³å¯ç¨
*
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
HTML <input> å
ç´ ç¨äºä¸ºåºäº Web ç表åå建交äºå¼æ§ä»¶ï¼ä»¥ä¾¿æ¥åæ¥èªç¨æ·çæ°æ®ãåå³äºè®¾å¤åç¨æ·ä»£çä¸åï¼è¡¨åå¯ä»¥ä½¿ç¨åç§ç±»åçè¾å
¥æ°æ®åæ§ä»¶ã<input> å
ç´ æ¯ç®å HTML ä¸æå¼ºå¤§ãæå¤æçå
ç´ ä¹ä¸ï¼å ä¸ºå®æå¤§éçè¾å
¥ç±»åå屿§ç»åã
å°è¯ä¸ä¸
<label for="name">åç§°ï¼4~8 个å符ï¼ï¼</label>
<input
type="text"
id="name"
name="name"
required
minlength="4"
maxlength="8"
size="10" />
label {
display: block;
font:
1rem "Fira Sans",
sans-serif;
}
input,
label {
margin: 0.4rem 0;
}
<input> ç±»å
<input> ç工使¹å¼ç¸å½ç¨åº¦ä¸åå³äº type 屿§çå¼ï¼ä¸åç type å¼ä¼å¨åèªçåè页ä¸è¿è¡ä»ç»ãå¦ææªæå®æ¤å±æ§ï¼åéç¨çé»è®¤ç±»å为 textã
å¯ç¨çå¼å æ¬ï¼
| ç±»å | æè¿° | åºæ¬ç¤ºä¾ |
|---|---|---|
| button | 没æé»è®¤è¡ä¸ºçæé®ï¼ä¸é¢æ¾ç¤º value 屿§çå¼ï¼é»è®¤ä¸ºç©ºã |
|
| checkbox | å¤éæ¡ï¼å¯å°å ¶å¼è®¾ä¸ºé䏿æªéä¸ã |
|
| color | ç¨äºæå®é¢è²çæ§ä»¶ï¼å¨æ¯æçæµè§å¨ä¸ï¼æ¿æ´»æ¶ä¼æå¼åè²å¨ã |
|
| date | è¾å ¥æ¥æçæ§ä»¶ï¼å¹´ãæãæ¥ï¼ä¸å æ¬æ¶é´ï¼ã卿¯æçæµè§å¨æ¿æ´»æ¶æå¼æ¥æéæ©å¨æå¹´ææ¥çæ°åæ»è½®ã |
|
| datetime-local | è¾å ¥æ¥æåæ¶é´çæ§ä»¶ï¼ä¸å æ¬æ¶åºã卿¯æçæµè§å¨æ¿æ´»æ¶æå¼æ¥æéæ©å¨æå¹´ææ¥çæ°åæ»è½®ã |
|
ç¼è¾é®ç®±å°åçåæ®µã类似 text è¾å
¥ï¼ä½å¨æ¯æçæµè§å¨å带æå¨æé®çç设å¤ä¸ä¼æéªè¯åæ°åç¸åºçé®çã |
|
|
| file | è®©ç¨æ·éæ©æä»¶çæ§ä»¶ãä½¿ç¨ accept 屿§è§å®æ§ä»¶è½éæ©çæä»¶ç±»åã
|
|
| hidden | 䏿¾ç¤ºçæ§ä»¶ï¼å ¶å¼ä»ä¼æäº¤å°æå¡å¨ã举个ä¾åï¼å³è¾¹å°±æ¯ä¸ä¸ªéå½¢çæ§ä»¶ã | |
| image | å¾å½¢å submit æé®ãæ¾ç¤ºçå¾åç± src 屿§å³å®ã妿 src 屿§ç¼ºå¤±ï¼å°±ä¼æ¾ç¤º alt çå
容ã |
|
| month | è¾å ¥å¹´åæçæ§ä»¶ï¼æ²¡ææ¶åºã |
|
| number | ç¨äºè¾å ¥æ°åçæ§ä»¶ãå¦ææ¯æçè¯ï¼ä¼æ¾ç¤ºæ»å¨æé®å¹¶æä¾é»è®¤éªè¯ãæ¥æå¨æé®çç设å¤ä¸ä¼æ¾ç¤ºæ°åé®çã |
|
| password | åè¡çææ¬åºåï¼å ¶å¼ä¼è¢«éèã妿ç«ç¹ä¸å®å ¨ï¼ä¼è¦åç¨æ·ã |
|
| radio | åéæé®ï¼å
许å¨å¤ä¸ªæ¥æç¸å name å¼çé项ä¸éä¸å
¶ä¸ä¸ä¸ªã |
|
| range | ç¨äºè¾å
¥æ°å¼çæ§ä»¶ï¼å
¶ç²¾ç¡®å¼å¹¶ä¸éè¦ãæ§ä»¶æ¯ä¸ä¸ªèå´ç»ä»¶ï¼é»è®¤å¼ä¸ºæ£ä¸é´çå¼ãåæ¶ä½¿ç¨ min å max æ¥è§å®å¯æ¥åå¼çèå´ã |
|
| reset | æ¤æé®å°è¡¨åçææå 容é置为é»è®¤å¼ã䏿¨è使ç¨è¯¥ç±»åã |
|
| search | ç¨äºæç´¢å符串çåè¡æååºåãè¾å ¥ææ¬ä¸çæ¢è¡ä¼è¢«èªå¨å»é¤ã卿¯æçæµè§å¨ä¸å¯è½æä¸ä¸ªå 餿é®ï¼ç¨äºæ¸ 餿´ä¸ªåºåãæ¥æå¨æé®çç设å¤ä¸çåè½¦å¾æ ä¼åææç´¢å¾æ ã |
|
| submit | ç¨äºæäº¤è¡¨åçæé®ã |
|
| tel | ç¨äºè¾å ¥çµè¯å·ç çæ§ä»¶ãæ¥æå¨æé®çç设å¤ä¸ä¼æ¾ç¤ºçµè¯æ°åé®çã |
|
| text | é»è®¤å¼ãåè¡çææ¬åæ®µï¼è¾å ¥å¼ä¸çæ¢è¡ä¼è¢«èªå¨å»é¤ã |
|
| time | ç¨äºè¾å ¥æ¶é´çæ§ä»¶ï¼ä¸å æ¬æ¶åºã |
|
| url | ç¨äºè¾å
¥ URL çæ§ä»¶ã类似 text è¾å
¥ï¼ä½æéªè¯åæ°ï¼å¨æ¯æå¨æé®çç设å¤ä¸æç¸åºçé®çã
|
|
| week | ç¨äºè¾å ¥ä»¥å¹´å卿°ç»æçæ¥æï¼ä¸å¸¦æ¶åºã |
|
| åºå¼çå¼ | ||
datetime |
ç¨äºè¾å ¥åºäº UTC æ¶åºçæ¥æåæ¶é´ï¼æ¶ãåãç§åç§çå°æ°é¨åï¼ã |
|
屿§
<input> å
ç´ ç±äºæ¥æè¯¸å¤å±æ§èå¼å¸¸å¼ºå¤§ï¼å
¶ä¸åæä¸¾ä¾è¯´æç type 屿§å°¤å
¶éè¦ãç±äºææ <input> å
ç´ æ 论æ¯åªç§ typeï¼é½åºäº HTMLInputElement æ¥å£ï¼æä»¥ç论ä¸è¯´ï¼å®ä»¬å
±äº«ä¸å¥ç¸åç屿§ãä½å®é
ä¸å¤§é¨å屿§åªä½ç¨äºç¹å®ä¸ç» typeãæ¤å¤ï¼ä¸äºå±æ§ä½ç¨äº <input> çæ¹å¼åå³äº <input> ç type 屿§ï¼ä¸åç type æä¸åçææã
ä¸é¢çè¡¨æ ¼ååºäºææå±æ§ï¼æ¯ä¸ªå±æ§é½æç®ççæè¿°ãè¡¨æ ¼åçå表æ´è¯¦ç»å°æè¿°äºåä¸ªå±æ§åå®ä»¬ä¸åªäº input ç±»åç¸å
³ãä¸å¤§é¨åæè
å
¨é¨ input ç±»åé½ç¸å
³ç屿§ä¼è®²è¿°æ´å¤ç»èãä¸äºé对ç¹å® input ç±»åç屿§ï¼æè
ææ input ç±»å齿ï¼ä½å¨ç¹å®ç input ç±»å䏿ç¹å®è¡¨ç°ç屿§ï¼ä¼å¨ç¸åºçç±»å页é¢ä¸è¯´æãè¿ä¸ªå
ç´ å
å«å
¨å±å±æ§ï¼ä¸äºé对 <input> å
ç´ æé¢å¤æä¹çå
¨å±å±æ§ä¹ä¼ç¹å«è¯´æã
<input> å
ç´ å
å«ç屿§å
å«å
¨å±ç HTML 屿§å以ä¸è¿äºé¢å¤å±æ§ï¼
| 屿§ | ç±»å | æè¿° |
|---|---|---|
accept |
file |
æä»¶ä¸ä¼ æ§ä»¶ä¸é¢ææä»¶ç±»åçæç¤º |
alpha |
color |
é¢è²çéæåº¦ |
alt |
image |
å¾çç±»åç alt 屿§ã对æ éç¢æ¯å¿ éç |
autocapitalize |
é¤äº urlãemail å password ä»¥å¤ |
æ§å¶è¾å ¥ææ¬çèªå¨å¤§åè¡ä¸º |
autocomplete |
é¤äº checkboxãradio åæé®ä»¥å¤ |
表åèªå¨å¡«å ç¹æ§æç¤º |
capture |
file |
æä»¶ä¸ä¼ æ§ä»¶ä¸åªä½æè·æ¹æ³çæç¤º |
checked |
checkboxãradio |
æ§ä»¶æ¯å¦éä¸ |
colorspace |
color |
éæ©é¢è²å¼æ¶éè¦ä½¿ç¨çé¢è²ç©ºé´ |
dirname |
hiddenãtextãsearchãurlãtelãemail |
表ååæ®µçåç§°ï¼ç¨äºå¨æäº¤è¡¨åæ¶åéå ç´ çæ¹åæ§ |
disabled |
ææç±»å | è¡¨åæ§ä»¶æ¯å¦ç¦ç¨ |
form |
ææç±»å | å°æ§ä»¶ä¸è¡¨åå ç´ å»ºç«èç³» |
formaction |
imageãsubmit |
è¦æäº¤è¡¨åç URL å°å |
formenctype |
imageãsubmit |
æäº¤è¡¨åæ¶ä½¿ç¨çè¡¨åæ°æ®ç¼ç ç±»å |
formmethod |
imageãsubmit |
æäº¤è¡¨åæ¶æä½¿ç¨ç HTTP æ¹æ³ |
formnovalidate |
imageãsubmit |
ç»è¿è¡¨åæäº¤æ¶çè¡¨åæ§ä»¶éªè¯ |
formtarget |
imageãsubmit |
æäº¤è¡¨åæ¶çæµè§ä¸ä¸æ |
height |
image |
ä¸ <img> å
ç´ ç height 屿§æç¸åå«ä¹ï¼åç´æ¹åä¸çç»´åº¦å¼ |
list |
é¤äº hiddenãpasswordãcheckboxãradio åæé®ä»¥å¤ |
èªå¨å®æé项ç <datalist> ç id 屿§çå¼ |
max |
dateãmonthãweekãtimeãdatetime-localãnumberãrange |
æå¤§å¼ |
maxlength |
textãsearchãurlãtelãemailãpassword |
value çæå¤§é¿åº¦ï¼å符æ°ï¼ |
min |
dateãmonthãweekãtimeãdatetime-localãnumberãrange |
æå°å¼ |
minlength |
textãsearchãurlãtelãemailãpassword |
value çæå°é¿åº¦ï¼å符æ°ï¼ |
multiple |
emailãfile |
å¸å°å¼ãæ¯å¦å 许å¤ä¸ªå¼ |
name |
ææç±»å | 表åçæ§ä»¶åç§°ï¼ä½ä¸ºé®å¼å¯¹çä¸é¨åä¸è¡¨åä¸åæäº¤ |
pattern |
textãsearchãurlãtelãemailãpassword |
为äºä½¿å¾ value ææï¼å¿
须符åçæ¨¡å¼ |
placeholder |
textãsearchãurlãtelãemailãpasswordãnumber |
彿²¡æå¼è®¾å®æ¶ï¼åºç°å¨è¡¨åæ§ä»¶ä¸çæå |
popovertarget |
button |
å° <input type="button"> æå®ä¸ºå¼¹åºæ¡å
ç´ çæ§å¶é¡¹ |
popovertargetaction |
button |
æå®å¼¹åºæ¡æ§ä»¶åºæ§è¡çæä½ |
readonly |
é¤äº hiddenãrangeãcolorãcheckboxãradio åæé®ä»¥å¤ |
å¸å°å¼ã妿åå¨ï¼å ¶ä¸çå¼å°ä¸å¯ç¼è¾ã |
required |
é¤äº hiddenãrangeãcolor åæé®ä»¥å¤ |
å¸å°å¼ã妿åå¨ï¼ä¸ä¸ªå¼æ¯å¿ éçï¼æè å¿ é¡»å¾éè¯¥å¼æè½æäº¤è¡¨æ ¼ã |
size |
textãsearchãurlãtelãemailãpassword |
æ§ä»¶ç尺寸 |
src |
image |
ä¸ <img> å
ç´ ç src 屿§å«ä¹ç¸åï¼å¾çèµæºçå°å |
step |
dateãmonthãweekãtimeãdatetime-localãnumberãrange |
ææçå¢éå¼ |
type |
ææç±»å | è¡¨åæ§ä»¶çç±»å |
value |
ææç±»å | è¡¨åæ§ä»¶çåå§å¼ |
width |
image |
ä¸ <img> å
ç´ ç width 屿§å«ä¹ç¸å |
ä¸äºé¢å¤çéæ å屿§è¢«å卿 å屿§çæè¿°ä¹åã
åç¬ç屿§
accept-
ä» å¯¹
fileè¾å ¥ç±»åææãaccept屿§å®ä¹äºfileä¸ä¼ æ§ä»¶å¯éæ©æä»¶ç±»åçå表ãåè§ file è¾å ¥ç±»å以äºè§£æ´å¤ä¿¡æ¯ã alpha-
ä» å¯¹
colorè¾å ¥ç±»åææï¼alpha屿§ä½¿ç»ç«¯ç¨æ·è½å¤è®¾ç½®æéé¢è²çéæåº¦ã alt-
ä» å¯¹
imageæé®ææãalt屿§æä¾äºå¾ççæ¿ä»£æåï¼å¨å¾ççsrc屿§ç¼ºå¤±æå¯¹åºèµæºå 载失败æ¶ï¼ä¼æ¾ç¤ºè¯¥å±æ§çå¼ãåè§ image è¾å ¥ç±»å以äºè§£æ´å¤ä¿¡æ¯ã autocapitalize-
æ§å¶è¾å ¥ææ¬æ¯å¦èªå¨é¦åæ¯å¤§åï¼ä»¥åéç¨ä½ç§æ¹å¼å®ç°ãæ´å¤ä¿¡æ¯è¯·åé
autocapitalizeå ¨å±å±æ§é¡µé¢ã autocomplete-
ï¼ä¸æ¯ä¸ä¸ªå¸å°å±æ§ï¼ï¼
autocomplete屿§å°ä¸ä¸ªä»¥ç©ºç½å符åéçå符串ä½ä¸ºå ¶å¼ï¼æè¿°è¾å ¥åºè¯¥æä¾ä»ä¹ç±»åçèªå¨å®æåè½ãä¸ä¸ªå ¸åçèªå¨å®æçå®ç°æ¯åå¿ä»¥åå¨åä¸è¾å ¥å段ä¸è¾å ¥çå¼ï¼ä½ä¹å¯è½å卿´å¤æçèªå¨å®æå½¢å¼ãä¾å¦ï¼æµè§å¨å¯ä»¥ä¸è®¾å¤çè系人å表éæï¼å¨çµåé®ä»¶è¾å ¥æ ä¸èªå¨å®æemailå°åãåè§autocomplete以äºè§£å 许çå¼ãautocomplete屿§å¯¹hiddenãtextãsearchãurlãtelãemailãdateãmonthãweekãtimeãdatetime-localãnumberãrangeãcoloråpasswordç±»åçè¾å ¥ææãè¯¥å±æ§å¯¹äºé£äºä¸è¿åæ°å¼æææ¬æ°æ®çè¾å ¥æ§ä»¶æ²¡æææï¼å¯¹é¤äºcheckboxãradioãfileå任使é®ç±»åçææè¾å ¥ç±»ååææãæ¥ç
autocomplete屿§ä»¥äºè§£é¢å¤ä¿¡æ¯ï¼å æ¬å¯ç å®å ¨ç¸å ³è¯´æï¼ä»¥åhiddenè¾å ¥ç±»åä¸å ¶ä»è¾å ¥ç±»åå¨autocomplete屿§ä¸çç»å¾®å·®å¼ã autofocus-
ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨ï¼è¡¨ç¤ºå½é¡µé¢å è½½å®æ¯ï¼æå å«è¯¥å ç´ ç
<dialog>æ¾ç¤ºå®æ¯ï¼æ¶ï¼è¯¥ input å ç´ åºè¯¥èªå¨æ¥æç¦ç¹ã夿³¨ï¼å ·æ
autofocus屿§çå ç´ å¯è½å¨DOMContentLoadedäºä»¶è§¦ååè·å¾ç¦ç¹ãææ¡£ä¸åªæä¸ä¸ªè¡¨åå ç´ å¯ä»¥å ·æ
autofocus屿§ãå¦æè¯¥å±æ§è®¾ç½®å°å¤äºä¸ä¸ªå ç´ ä¸ï¼ä¼èç¦ç¬¬ä¸ä¸ªå ·æè¯¥å±æ§çå ç´ ãautofocusä¸è½åºç¨äºç±»å为hiddençè¾å ¥æ§ä»¶ä¸ï¼å 为éèçæ§ä»¶ä¸å¯èç¦ãè¦åï¼èªå¨èç¦è¡¨åæ§ä»¶ä¼ä½¿ä½¿ç¨è¯»å±ææ¯çè§åéç¢è åæè®¤ç¥éç¢ç人æå°å°æã彿å®äº
autofocusæ¶ï¼è¯»å±å¨ä¼å°ç¨æ·âä¼ éâå°è¡¨åæ§ä»¶ä¸ï¼èä¸ä¼äºå è¦åä»ä»¬ãå¨åºç¨
autofocus屿§æ¶ï¼è¦ä»ç»èèæ éç¢é®é¢ãèªå¨èç¦äºä¸ä¸ªæ§ä»¶ä¼å¯¼è´é¡µé¢å¨å è½½æ¶æ»å¨ãç¦ç¹ä¹ä¼å¯¼è´å¨æé®ç卿äºè§¦æ¸è®¾å¤ä¸æ¾ç¤ºãè½ç¶å±å¹é 读å¨ä¼å®£åæ¶å°ç¦ç¹çè¡¨åæ§ä»¶çæ ç¾ï¼ä½å±å¹é 读å¨ä¸ä¼å®£åæ ç¾ä¹åçä»»ä½å 容ï¼å¨å°è®¾å¤ä¸çè§åè¯å¥½çç¨æ·åæ ·ä¼éè¿å åå 容ææçä¸ä¸æä¿¡æ¯ã capture-
å¨ HTML åªä½æè·è§èä¸å¼å ¥ï¼ä» 对
fileè¾å ¥ç±»åææï¼capture屿§å®ä¹äºåºè¯¥ä½¿ç¨åªç§åªä½ï¼å¦éº¦å é£ãè§é¢æç¸æºï¼æ¥æè·ä¸ä¸ªæ°æä»¶ï¼ä»¥ä¾¿å¨æ¯æåºæ¯ä¸ç¨fileä¸ä¼ æ§ä»¶ä¸ä¼ ãåè§ file è¾å ¥ç±»åã checked-
å¸å°å±æ§ï¼å¯¹äº
radioåcheckboxç±»åææã妿å¨radioç±»åä¸åºç°ï¼ä»£è¡¨è¯¥åéæé®æ¯å½åååç§°ç»ä¸æéå®çé£ä¸ä¸ªã妿å¨checkboxç±»åä¸åºç°ï¼ä»£è¡¨é¡µé¢å è½½æ¶ï¼é»è®¤éæ©è¯¥å¤éæ¡ï¼è¿å¹¶ä¸ä»£è¡¨å¤éæ¡å½åæ¯å¦éæ©ï¼å¦æå¤éæ¡ç¶ææ¹åï¼è¯¥å 容屿§ä¸ä¼åé¦è¿ç§æ¹åï¼åªä¼æ´æ°HTMLInputElementçcheckedIDL 屿§ã夿³¨ï¼ä¸å ¶ä»è¾å ¥æ§ä»¶ä¸åï¼å¤éæ¡ååéæé®çå¼åªä¼å¨
checkedç¶ææ¶æä¼å æ¬å¨æäº¤çæ°æ®ä¸ã妿å½åæ¯checkedç¶æï¼å¤éæ¡çåç§°åå¼å°±ä¼è¢«æäº¤ãä¾å¦ï¼
name为fruitçå¤éæ¡å«ævalue为cherryçä¸é¡¹ï¼ä¸è¯¥å¤éæ¡ä¸ºéä¸ç¶æï¼æäº¤çè¡¨åæ°æ®å°å å«fruit=cherryï¼å¦æå¤éæ¡ä¸ºéæ´»å¨ç¶æï¼å®ä¸ä¼åå ¥å°è¡¨åæ°æ®ä¸ãå¤éæ¡ååéæé®çé»è®¤valueå¼ä¸ºonã colorspace-
ä» å¯¹
colorè¾å ¥ç±»åææãcolorspace屿§æå®äºtype="color"æä½¿ç¨çè²å½©ç©ºé´ãå¯è½çæä¸¾å¼å æ¬ï¼"limited-srgb"ï¼é¢è²å±äº sRGB è²å½©ç©ºé´ï¼å ¶ä¸å æ¬rgb()ãhsl()ãhwb()å<hex-color>å¼ãé¢è²å¼éå¶ä¸ºæ¯ä¸ªrãgåbåé 8 ä½ãè¿æ¯é»è®¤å¼ã"display-p3"ï¼Display P3 è²å½©ç©ºé´ï¼ä¾å¦ï¼color(display-p3 1.84 -0.19 0.72 / 0.6)
dirname-
对
hiddenãtextãsearchãurlãtelåemailè¾å ¥ç±»åææãdirname屿§å 许æäº¤å ç´ çæ¹åæ§ãå½å å«è¿ä¸ªå±æ§æ¶ï¼è¡¨åæ§ä»¶å°æäº¤ä¸¤ä¸ªåç§°/å¼å¯¹ï¼ç¬¬ä¸ä¸ªæ¯nameåvalueï¼ç¬¬äºä¸ªæ¯dirnameä½ä¸ºåç§°ï¼å ¶å¼ä¸ºæµè§å¨è®¾ç½®çltrærtlãhtml<form action="page.html" method="post"> <label >æ°´æï¼ <input type="text" name="fruit" dirname="fruit.dir" value="cherry" /> </label> <input type="submit" /> </form> <!-- page.html?fruit=cherry&fruit.dir=ltr -->å½æäº¤ä¸è¿°è¡¨åæ¶ï¼ä¼åé
name/value对fruit=cherryådirname/ æ¹å对fruit.dir=ltrãæ´å¤ä¿¡æ¯è¯·åè§dirname屿§ã disabled-
ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨çè¯ï¼è¡¨ç¤ºç¨æ·ä¸åºè¯¥ä¸è¯¥è¾å ¥è¿è¡äº¤äºãç¦ç¨çè¾å ¥éå¸¸ä»¥è¾æçé¢è²åç°ï¼æä½¿ç¨ä¸äºå ¶ä»å½¢å¼çæç¤ºï¼è¡¨æè¯¥å段ä¸è½ä½¿ç¨ã
å ·ä½æ¥è¯´ï¼ç¦ç¨çè¾å ¥ä¸ä¼æ¥æ¶
clickäºä»¶ï¼èä¸ç¦ç¨çè¾å ¥ä¸ä¼é表åæäº¤ã夿³¨ï¼è½ç¶è§è䏿²¡æè¦æ±ï¼ä½ Firefox é»è®¤ä¼å¨ä¸åç页é¢å è½½ä¸ä¿æ
<input>ç卿ç¦ç¨ç¶æã使ç¨autocomplete屿§æ¥æ§å¶è¿ä¸ªç¹æ§ã form-
ä¸ä¸ªåç¬¦ä¸²ï¼æå®è¯¥è¾å ¥ä¸ä¹ç¸å ³ç
<form>å ç´ ï¼å³å ¶è¡¨åææè ï¼ã妿åå¨è¯¥å±æ§ï¼è¯¥å符串çå¼å¿ é¡»ä¸ç¸åææ¡£ä¸ç<form>å ç´ çidç¸åãå¦ææ²¡ææå®è¯¥å±æ§ï¼è¯¥<input>å ç´ ä¸æè¿å å«å®ç表åç¸å ³ãform屿§å¯ä»¥è®©ä½ å¨ææ¡£çä»»ä½å°æ¹æ¾ç½®ä¸ä¸ªè¾å ¥æ§ä»¶ï¼ä½å¨ææ¡£çå ¶ä»å°æ¹å å«ä¸ä¸ªè¡¨åã夿³¨ï¼ä¸ä¸ªè¾å ¥åªè½ä¸ä¸ä¸ªè¡¨åç¸å ³ã
formaction-
ä» å¯¹
imageåsubmitè¾å ¥ç±»åææãåè§ submit è¾å ¥ç±»åä»ç»ä»¥è·å¾æ´å¤ä¿¡æ¯ã formenctype-
ä» å¯¹
imageåsubmitè¾å ¥ç±»åææãåè§ submit è¾å ¥ç±»åä»ç»ä»¥è·å¾æ´å¤ä¿¡æ¯ã formmethod-
ä» å¯¹
imageåsubmitè¾å ¥ç±»åææãåè§ submit è¾å ¥ç±»åä»ç»ä»¥è·å¾æ´å¤ä¿¡æ¯ã formnovalidate-
ä» å¯¹
imageåsubmitè¾å ¥ç±»åææãåè§ submit è¾å ¥ç±»åä»ç»ä»¥è·å¾æ´å¤ä¿¡æ¯ã formtarget-
ä» å¯¹
imageåsubmitè¾å ¥ç±»åææãåè§ submit è¾å ¥ç±»åä»ç»ä»¥è·å¾æ´å¤ä¿¡æ¯ã height-
ä» å¯¹
imageè¾å ¥æé®ææãheightæ¯è¦æ¾ç¤ºä»£è¡¨å¾å½¢æäº¤æé®çå¾ççé«åº¦ãåè§ image è¾å ¥ç±»åã id-
å ¨å±å±æ§ï¼å¯¹ææå ç´ ææï¼å æ¬ææçè¾å ¥ç±»åï¼å®å®ä¹äºä¸ä¸ªå¯ä¸çæ è¯ç¬¦ï¼IDï¼ï¼å¨æ´ä¸ªææ¡£ä¸å¿ é¡»æ¯å¯ä¸çãå ¶ç®çæ¯ä¸ºäºå¨é¾æ¥æ¶è¯å«è¯¥å ç´ ã该å¼è¢«ç¨ä½
<label>çfor屿§çå¼ï¼ä»¥ä¾¿å°æ ç¾ä¸è¡¨åæ§ä»¶è¿æ¥èµ·æ¥ãåè§<label>ã inputmode-
对ææå ç´ é½ææçå ¨å±å¼ï¼å®ä¸ºæµè§å¨æä¾äºä¸ä¸ªæç¤ºï¼è¯´æå¨ç¼è¾è¿ä¸ªå ç´ æå ¶å 容æ¶è¦ä½¿ç¨çèæé®çé 置类åãå¼å æ¬
noneãtextãtelãurlãemailãnumericãdecimalåsearchã list-
ç»äº
list屿§çå¼åºè¯¥æ¯ä½äºåä¸ææ¡£ä¸ç<datalist>å ç´ çidã<datalist>æä¾äºä¸ä¸ªé¢å®ä¹å¼çå表ï¼åç¨æ·å»ºè®®è¿ä¸ªè¾å ¥ãå表ä¸ä»»ä½ä¸typeä¸å ¼å®¹çå¼é½ä¸å æ¬å¨å»ºè®®çé项ä¸ãææä¾ç弿¯å»ºè®®ï¼ä¸æ¯è¦æ±ï¼ç¨æ·å¯ä»¥ä»è¿ä¸ªé¢å®ä¹çå表ä¸éæ©ï¼æè æä¾ä¸åçå¼ãå¨
textãsearchãurlãtelãemailãdateãmonthãweekãtimeãdatetime-localãnumberãrangeåcolorä¸åææãæ ¹æ®è§èï¼
hiddenãpasswordãcheckboxãradioãfileå任使é®ç±»å䏿¯ælist屿§ãæ ¹æ®æµè§å¨çä¸åï¼ç¨æ·å¯è½ä¼çå°ä¸ä¸ªå»ºè®®çèªå®ä¹è°è²æ¿ã沿çä¸ä¸ªèå´çè·³å¨æ è®°ãçè³æ¯ä¸ä¸ªå
<select>䏿 ·æå¼ä½å 许éå表å¼çè¾å ¥ãæ¥çæµè§å¨å ¼å®¹æ§è¡¨æ ¼ï¼äºè§£å ¶ä»è¾å ¥ç±»åãåè§
<datalist>å ç´ ã max-
对
dateãmonthãweekãtimeãdatetime-localãnumberårangeè¾å ¥ç±»åææï¼å®ä¹äºå 许å¼èå´å çæå¤§å¼ã妿è¾å ¥å°å ç´ ä¸çvalueè¶ è¿æ¤å¼ï¼å该å ç´ å°æ æ³éè¿çº¦æéªè¯ã妿max屿§çå¼ä¸æ¯æ°åï¼åå ç´ æ²¡ææå¤§å¼ãæä¸ç§ç¹æ®æ åµï¼å¦ææ°æ®ç±»åæ¯å¨ææ§çï¼å¦æ¥æææ¶é´ï¼ï¼
maxçå¼å¯è½ä½äºminçå¼ï¼è¿è¡¨æèå´å¯ä»¥ç¯ç»ï¼ä¾å¦ï¼è¿å è®¸ä½ æå®ä¸ä¸ªä»æä¸ 10 ç¹å°åæ¨ 4 ç¹çæ¶é´èå´ã maxlength-
对
textãsearchãurlãtelãemailåpasswordç±»åææãå®å®ä¹äºç¨æ·å¯ä»¥è¾å ¥å°è¯¥å段ä¸çæå¤§å符æ°ï¼ä»¥ UTF-16 ç å 为åä½ï¼ãå¿ é¡»ä¸ºå¤§äºçäº0çæ´æ°ãå¦ææªæå®maxlengthææå®äºæ æçå¼ï¼åè¯¥åæ®µå°æ²¡ææå¤§å¼ãè¿ä¸ªå¼ä¹å¿ 须大äºçäºminlengthçå¼ãå¦æææ¬æ¡ä¸çå符æ°å¤§äº
maxlengthUTF-16 ç å é¿åº¦ï¼åè¾å ¥å°æ æ³éè¿çº¦æéªè¯ãé»è®¤æ åµä¸ï¼æµè§å¨å°é»æ¢ç¨æ·è¾å ¥è¶ è¿maxlength屿§ææå®çå¼çå符ãåè§å®¢æ·ç«¯éªè¯ä¸è以äºè§£æ´å¤ä¿¡æ¯ã min-
对
dateãmonthãweekãtimeãdatetime-localãnumberårangeè¾å ¥ç±»åææï¼å®ä¹äºå 许å¼èå´å çæå°å¼ã妿è¾å ¥å°å ç´ çvalueå°äºæ¤å¼ï¼å该å ç´ å°æ æ³éè¿çº¦æéªè¯ã妿minæå®çå¼ä¸æ¯æ°åï¼åå ç´ æ²¡ææå°å¼ã该å¼å¿ é¡»å°äºæçäº
max屿§çå¼ã妿min屿§åå¨ä½æ²¡ææå®ææ æï¼åä¸åºç¨minå¼ã妿min屿§ææï¼å¹¶ä¸é空å¼å°äºmin屿§æå 许çæå°å¼ï¼çº¦æéªè¯å°é»æ¢è¡¨åæäº¤ãåè§å®¢æ·ç«¯éªè¯ä¸è以è·åæ´å¤ä¿¡æ¯ãæä¸ç§ç¹æ®æ åµï¼å¦ææ°æ®ç±»åæ¯å¨ææ§çï¼å¦æ¥æææ¶é´ï¼ï¼
minçå¼å¯è½é«äºmaxçå¼ï¼è¿è¡¨æèå´å¯ä»¥ç¯ç»ï¼ä¾å¦ï¼è¿å è®¸ä½ æå®ä¸ä¸ªä»æä¸ 10 ç¹å°åæ¨ 4 ç¹çæ¶é´èå´ã minlength-
对
textãsearchãurlãtelãemailåpasswordç±»åææãå®å®ä¹äºç¨æ·å¯ä»¥è¾å ¥å°è¯¥å段ä¸çæå°å符æ°ï¼ä»¥ UTF-16 ç å 为åä½ï¼ã该å¼å¿ é¡»æ¯å°äºçäºmaxlengthæå®çå¼çéè´æ´æ°å¼ãå¦ææªæå®minlengthææå®äºæ æçå¼ï¼åå ç´ æ²¡ææå°å¼ã妿è¾å ¥åæ®µçææ¬é¿åº¦å°äº
minlengthUTF-16 ç å çé¿åº¦ï¼è¾å ¥å°æ æ³éè¿çº¦æéªè¯ï¼é»æ¢è¡¨åæäº¤ãåè§å®¢æ·ç«¯éªè¯ä¸è以äºè§£æ´å¤ä¿¡æ¯ã multiple-
å¦æè®¾ç½®äº
multipleå¸å°å±æ§ï¼æå³çç¨æ·å¯ä»¥å¨çµåé®ä»¶é¨ä»¶ä¸è¾å ¥éå·åéççµåé®ä»¶å°åï¼æè å¯ä»¥éè¿fileè¾å ¥éæ©å¤ä¸ªæä»¶ãåè§ email å file è¾å ¥ç±»åã name-
ä¸ä¸ªæå®è¾å ¥æ§ä»¶åç§°çå符串ãå½è¡¨åæ°æ®è¢«æäº¤æ¶ï¼è¿ä¸ªååä¼åæ§ä»¶çå¼ä¸èµ·æäº¤ã
é常æ
nameç使¯ä¸ä¸ªå¿ éç屿§ï¼å³ä½¿å®ä¸æ¯ï¼ã妿ä¸ä¸ªè¾å ¥æ²¡ææå®nameï¼æènameæ¯ç©ºçï¼é£ä¹è¿ä¸ªè¾å ¥çå¼å°±ä¸ä¼å表åä¸èµ·æäº¤ï¼ç¦ç¨çæ§ä»¶ãæªéä¸çåéæé®ãæªéä¸çå¤éæ¡åéç½®æé®ä¹ä¸ä¼è¢«åéãèèè¿ä¸¤ä¸ªç¹æ®æ åµï¼
_charset_ï¼å¦æè¢«ç¨ä½ hidden ç±»åç<input>å ç´ çåç§°ï¼è¯¥è¾å ¥çvalueä¼è¢«ç¨æ·ä»£çèªå¨è®¾ç½®ä¸ºæäº¤è¡¨åæ¶ä½¿ç¨çå符ç¼ç ãisindexï¼ç±äºåå²åå ï¼ä¸å 许使ç¨isindexè¿ä¸ªååã
name屿§å¯¹åéæé®çè¡ä¸ºå®å ¨ä¸åãå¨ä¸ä¸ªååçåéæé®ç»ä¸ï¼ä¸æ¬¡åªè½éä¸ä¸ä¸ªåéæé®ãéæ©è¯¥ç»ä¸çä»»ä½ä¸ä¸ªåéæé®ä¼èªå¨åæ¶å¯¹åä¸ç»ä¸å½å被éä¸çåéæé®çéæ©ãå¦æè¡¨å被æäº¤ï¼è¿ä¸ä¸ªè¢«éä¸çåéæé®çå¼ä¼ååç§°ä¸èµ·è¢«åéã
å½éè¿ Tab é®è¿å ¥ä¸ç³»åååçåéæé®ç»æ¶ï¼å¦ææä¸ä¸ªè¢«éä¸ï¼å°èç¦è¯¥åéæé®ã妿å®ä»¬æ²¡æææºé¡ºåºåç»ï¼å¦æç»ä¸æä¸ä¸ªè¢«éä¸ï¼å½éå°ç»ä¸ç第ä¸ä¸ªæ¶ï¼Tab é®è¿å ¥ç»å¼å§ï¼è·³è¿æææ²¡æéä¸çãæ¢å¥è¯è¯´ï¼å¦æåå¨éä¸é¡¹ï¼Tab é®å°±ä¼è·³è¿è¯¥ç»ä¸æªè¢«éä¸çåéæé®ï¼å¦æä¸åå¨ï¼å½å°è¾¾ååç»ä¸ç第ä¸ä¸ªæé®æ¶ï¼å°±ä¼èç¦è¯¥åéæé®ç»ã
䏿¦ç»ä¸çä¸ä¸ªåéæé®æäºç¦ç¹ï¼ä½¿ç¨ç®å¤´é®å°æµè§ææååçåéæé®ï¼å³ä½¿è¿äºåéæé®å¨æºé¡ºåºä¸æ²¡æè¢«åç»ã
妿ä¸ä¸ªè¾å ¥å ç´ å ·æ
nameï¼è¯¥åç§°æä¸ºå å«å®ç表åå ç´ çHTMLFormElement.elements屿§ã妿æä¸¤ä¸ªnameåå«è®¾ç½®ä¸ºgueståhat-sizeçè¾å ¥å ç´ ï¼å¯ä»¥ä½¿ç¨å¦ä¸ä»£ç ï¼jslet form = document.querySelector("form"); let guestName = form.elements.guest; let hatSize = form.elements["hat-size"];æ¤æ®µä»£ç è¿è¡åï¼
guestNameå°æä¸ºgueståæ®µçHTMLInputElementï¼hatSizeå°æä¸ºhat-sizeåæ®µçHTMLInputElementãè¦åï¼é¿å ç»è¡¨åå ç´ ä¸ä¸ªä¸è¡¨åå ç½®å±æ§ç¸å¯¹åºç
nameï¼å ä¸ºè¿æ ·ä½ å°±ä¼ç¨è¿ä¸ªå¯¹ç¸åºè¾å ¥çå¼ç¨æ¥è¦çé¢å®ä¹ç屿§ææ¹æ³ã pattern-
对
textãsearchãurlãtelãemailåpasswordç±»åææã为äºä½¿valueéè¿çº¦æéªè¯ï¼å¿ 须满足pattern屿§ç»å®çæ£å表达å¼ãå®å¿ é¡»æ¯RegExpç±»åçææ JavaScript æ£å表达å¼ï¼å¹¶ä¸å·²å¨æä»¬çæ£åè¡¨è¾¾å¼æåä¸è¿è¡äºè¯´æãæ¨¡å¼ææ¬å¨å´ä¸åºæå®æ£ææ ãå¨ç¼è¯æ£åè¡¨è¾¾å¼æ¶ï¼- 模å¼å°è¢«éå¼å
裹å¨
^(?:å)$ä¸ï¼ä½¿å¾å¹é å¿ é¡»ä¸è¾å ¥å¼çå ¨é¨å 容è¿è¡æ¯å¯¹ï¼å³^(?:<pattern>)$ã - é»è®¤å¯ç¨
'v'æ å¿ï¼ä½¿æ¨¡å¼è¢«è§ä¸º Unicode ç ç¹çåºåï¼èé ASCIIã
妿
pattern屿§åå¨ï¼ä½æ¯æªæå®æ¨¡å¼ææ æï¼åä¸åºç¨ä»»ä½æ£å表达å¼ï¼å¹¶ä¸å°å®å ¨å¿½ç¥æ¤å±æ§ãå¦ææ¨¡å¼å±æ§æ¯ææçï¼å¹¶ä¸è¯¥é空å¼ä¸æ¨¡å¼ä¸å¹é ï¼çº¦æéªè¯å°é»æ¢è¡¨åæäº¤ã妿åå¨multiple屿§ï¼åç¼è¯åçæ£å表达å¼å°ä¸æ¯ä¸ªéå·åéçå¼è¿è¡å¹é ã夿³¨ï¼å¦æä½¿ç¨äº
pattern屿§ï¼è¦å¨éè¿åç¥ç¨æ·æææçè¾å ¥æ ¼å¼ãä½ å¯ä»¥å å«title屿§æ¥è§£é满足模å¼çéæ±è¯´æï¼å¤§å¤æ°æµè§å¨å°å®ä»¬æ¾ç¤ºä¸ºå·¥å ·æç¤ºï¼tooltipï¼ãå¯¹äºæ éç¢æ¥è¯´ï¼è§è§çè§£éæ¯å¿ è¦çï¼å·¥å ·æç¤ºæ¯ä¸ç§æ¹è¿ç¹ãåè§å®¢æ·ç«¯éªè¯ä¸è以äºè§£æ´å¤ä¿¡æ¯ã
- 模å¼å°è¢«éå¼å
裹å¨
placeholder-
对
textãsearchãurlãtelãemailãpasswordånumberææãplaceholder屿§å¯åç¨æ·æä¾æå ³è¯¥å段ä¸éè¦ä»ä¹æ ·çä¿¡æ¯çç®çæç¤ºãå®åºè¯¥æ¯ä¸ä¸ªåè¯æçè¯æ¥è¯´æé¢æçæ°æ®ç±»åï¼è䏿¯è¯´ææ§æ¶æ¯ãææ¬ä¸ä¸å¾å å«åè½¦ç¬¦ææ¢è¡ç¬¦ãä¾å¦ï¼æä¸ªå段éè¦æ¶éç¨æ·çå§æ°ï¼å ¶æ ç¾ä¸ºâå§æ°âï¼ä¸ä¸ªéåçå 使åå¯è½æ¯âå¦ï¼èµµâã夿³¨ï¼
placeholder屿§å¨è¯ä¹ä¸ä¸å¦å ¶ä»è§£é表åçæ¹å¼æç¨ï¼èä¸ä¼å¯¹ä½ çå å®¹é æææ³ä¸å°çææ¯é®é¢ãåè§æ ç¾ä»¥è·å¾æ´å¤ä¿¡æ¯ã popovertarget-
å°
<input type="button">å ç´ è½¬æ¢ä¸ºå¼¹åºæ¡æ§å¶æé®ï¼å ¶å¼ä¸ºè¦æ§å¶çå¼¹åºæ¡å ç´ ç IDãæ´å¤è¯¦æ 请åé Popover API ä¸é¢é¡µé¢ãéè¿popovertarget屿§å»ºç«å¼¹åºæ¡ä¸å ¶è°ç¨æé®çå ³ç³»ï¼è¿å ·æä»¥ä¸ä¸¤ä¸ªå®ç¨ææï¼- æµè§å¨ä¼èªå¨å建éå¼
aria-details屿§ï¼å¹¶å¨å¼¹åºæ¡æ¾ç¤ºæ¶å°å ¶ç½®äºé®çç¦ç¹å¯¼èªé¡ºåºçåçä½ç½®ãè¿ä½¿å¾å¼¹åºæ¡å¯¹é®çåè¾ å©ææ¯ï¼ATï¼ç¨æ·æ´å ·å¯è®¿é®æ§ï¼åè§å¼¹åºæ¡æ éç¢ç¹æ§ï¼ã - æµè§å¨ä¼å¨ä¸¤è é´å»ºç«éå¼éç¹å ³èï¼ä¾¿äºéè¿ CSS éç¹å®ä½å°å¼¹åºæ¡å®ä½äºå ¶æ§å¶é¡¹å¨å´ãæ´å¤ç»è请åé å¼¹åºæ¡éç¹å®ä½ã
- æµè§å¨ä¼èªå¨å建éå¼
popovertargetaction-
æå®ç±æ§ä»¶
<input type="button">æ§å¶çå¼¹åºæ¡å ç´ åºæ§è¡çæä½ãå¯è½å¼å æ¬ï¼"hide"-
æé®å°éèå·²æ¾ç¤ºçå¼¹åºæ¡ãè¥å°è¯éèå·²éèçå¼¹åºæ¡ï¼å䏿§è¡ä»»ä½æä½ã
"show"-
æé®å°æ¾ç¤ºéèçå¼¹åºæ¡ãè¥å°è¯æ¾ç¤ºå·²æ¾ç¤ºçå¼¹åºæ¡ï¼å䏿§è¡ä»»ä½æä½ã
"toggle"-
æé®å°åæ¢å¼¹åºæ¡çæ¾ç¤ºç¶æãè¥å¼¹åºæ¡å¤äºéèç¶æï¼åæ¾ç¤ºï¼è¥å¤äºæ¾ç¤ºç¶æï¼åéèãè¥çç¥
popovertargetaction屿§ï¼å"toggle"为æ§å¶æé®é»è®¤æ§è¡çæä½ã
readonly-
ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨ï¼åè¡¨ç¤ºè¯¥åæ®µä¸è½ç±ç¨æ·ç¼è¾ã
readonly屿§æ¯ætextãsearchãurlãtelãemailãdateãmonthãweekãtimeãdatetime-localãnumberåpasswordè¾å ¥ç±»åãåè§ HTML 屿§ï¼
readonly以äºè§£æ´å¤ä¿¡æ¯ã required-
requiredæ¯ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨ï¼åè¡¨ç¤ºç¨æ·å¿ é¡»å¨æäº¤è¡¨åä¹åæå®ä¸ä¸ªé空å¼ãrequired屿§æ¯ætextãsearchãurlãtelãemailãdateãmonthãweekãtimeãdatetime-localãnumberãpasswordãcheckboxãradioåfileè¾å ¥ç±»åãåè§å®¢æ·ç«¯éªè¯å HTML 屿§ï¼
required以äºè§£æ´å¤ä¿¡æ¯ã size-
对
emailãpasswordãtelãurlåtextææãsize屿§æç¤ºæ¾ç¤ºè¾å ¥æ§ä»¶çå¤å°ãåºæ¬ä¸å建äºä¸è®¾ç½® CSSwidth屿§ç¸åçç»æï¼ä½æä¸äºç¹æ®æ§ï¼å¼çå ·ä½åä½åå³äºè¾å ¥ç±»åã对äºpasswordåtextï¼å®æ¯å符æ°éï¼æemåä½å¤§å°ï¼ï¼é»è®¤å¼æ¯20ã对äºå ¶ä»æ åµï¼æ¯åç´ å¼ï¼æpxåä½å¤§å°ï¼ãCSSwidthçä¼å 级é«äºsize屿§ã src-
ä» å¯¹
imageè¾å ¥æé®ææãsrcåæ°ä¸ºå符串ï¼ç¨äºæå®è¦æ¾ç¤ºçå¾åæä»¶ URLï¼è¯¥å¾åå°ä½ä¸ºå¾å½¢åæäº¤æé®åç°ãåè§ image è¾å ¥ç±»åã step-
对
dateãmonthãweekãtimeãdatetime-localãnumberårangeè¾å ¥ç±»åææãstep屿§æå®äºå¼å¿ 须满足çç²åº¦ãä» å½å¼ä¸æ¥é¿åºåå¼ç¸å·®æ´æ°æ¥æ¶æææãæ¥é¿åºåå¼ä¸ºï¼è¥æå®å为minï¼å¦å为valueï¼è¥ä¸¤è åæªæä¾å为0ï¼week屿§é¤å¤ï¼å ¶é»è®¤æ¥é¿åºåå¼ä¸º -259,200,000ï¼ä»£è¡¨1970-W01å¨çèµ·å§ç¹ï¼ãå¦ææ²¡ææç¡®å å«å®ï¼
step对äºç±»å为numberårangeçé»è®¤å¼ä¸º 1ã- æ¯ä¸ç§æ¥æ/äºä»¶è¾å
¥ç±»åæä¸ä¸ªéåçé»è®¤
stepå¼ï¼è¯·æ¥é ç¸å ³ç页é¢ä»¥è·åï¼dateãdatetime-localãmonthãtimeåweekã
å¼å¿ 须为ä¸ä¸ªæ£æ°ï¼æ´æ°æå°æ°ï¼æç¹æ®å¼
anyï¼æå³ç䏿å®ä»»ä½æ¥è¿å¼ï¼ä»»æå¼é½å¯ä»¥æ¥åï¼é¤å ¶ä»å¶çº¦å ç´ å¦minæmaxä¹å¤ï¼ï¼ãå¦ææ²¡ææç¡®è®¾ç½®
anyï¼numberãæ¥æ/æ¶é´è¾å ¥ç±»åårangeè¾å ¥ç±»åçææå¼çäºæ¥è¿çåºç¡ââminå¼åæ¥è¿å¼çå¢éï¼å¦ææå®çè¯ï¼æé«ä¸ºmaxå¼ãä¾å¦ï¼å¦æåå¨è¿æ ·ä¸ä¸ªå ç´
<input type="number" min="10" step="2">ï¼é£ä¹ä»»ä½å¤§äºçäº10çå¶æ´æ°é½æ¯ææçã妿çç¥ï¼<input type="number">ï¼ï¼ä»»ä½æ´æ°é½ææï¼ä½æµ®ç¹æ°ï¼å¦4.2ï¼æ æï¼å 为stepé»è®¤ä¸º1ã为äºä½¿4.2ææï¼stepå¿ é¡»è¢«è®¾ç½®ä¸ºanyã0.1ã0.2 æä»»ä½minå¼ä»¥.2ç»å°¾çæ°åï¼ä¾å¦<input type="number" min="-5.2">ã夿³¨ï¼å½ç¨æ·è¾å ¥çæ°æ®ä¸ç¬¦åæ¥è¿é ç½®æ¶ï¼è¯¥å¼å¨çº¦æéªè¯ä¸è¢«è®¤ä¸ºæ¯æ æçï¼å°å¹é
:invalid伪类ãåè§å®¢æ·ç«¯éªè¯ä»¥è·åæ´å¤ä¿¡æ¯ã
tabindex-
对ææå ç´ ææçå ¨å±å±æ§ï¼å æ¬ææçè¾å ¥ç±»åï¼æ¯ä¸ä¸ªæ´æ°å±æ§ï¼è¡¨ç¤ºè¯¥å ç´ å¦æåä¸é¡ºåºé®ç导èªï¼æ¯å¦å¯ä»¥æ¥åè¾å ¥ç¦ç¹ï¼å¯èç¦ï¼ãç±äºé¤äºéèç±»åçè¾å ¥å¤ï¼ææçè¾å ¥ç±»å齿¯å¯èç¦çï¼è¿ä¸ªå±æ§ä¸åºè¯¥ç¨å¨è¡¨åæ§ä»¶ä¸ï¼å ä¸ºè¿æ ·åéè¦ç®¡çææ¡£ä¸ææå ç´ çèç¦é¡ºåºï¼å¦æè®¾ç½®é误ï¼å°±æå¯è½æå®³å¯ç¨æ§åæ éç¢æ§ã
title-
对ææå ç´ ææçå ¨å±å±æ§ï¼å æ¬ææçè¾å ¥ç±»åï¼å å«ä¸ä¸ªä»£è¡¨ä¸å®æå±çå ç´ ç¸å ³çå¨è¯¢ä¿¡æ¯çææ¬ãè¿æ ·çä¿¡æ¯éå¸¸ä»¥å·¥å ·æç¤ºçå½¢å¼åç°ç»ç¨æ·ï¼ä½ä¸å¿ è¦ï¼ãæ é¢ä¸åºä½ä¸ºè¡¨åæ§ä»¶ç¨éç主è¦è§£éãç¸åï¼å¯ä»¥ä½¿ç¨
<label>å ç´ ï¼å ¶for屿§è®¾ç½®ä¸ºè¡¨åæ§ä»¶çid屿§ãåè§ä¸é¢çæ ç¾ã type-
ä¸ä¸ªåç¬¦ä¸²ï¼æå®è¦æ¸²æçæ§ä»¶çç±»åãä¾å¦ï¼è¦å建ä¸ä¸ªå¤éæ¡ï¼ä½¿ç¨
checkboxçå¼ã妿çç¥ï¼ææå®ä¸ä¸ªæªç¥å¼ï¼ï¼å使ç¨è¾å ¥ç±»åtextï¼å建ä¸ä¸ªçº¯ææ¬è¾å ¥å段ãå 许çå¼åå¨äºä¸æ¹ç Input ç±»åä¸ã
value-
è¾å ¥æ§ä»¶çå¼ãå½å¨ HTML 䏿宿¶ï¼è¿æ¯åå§å¼ãä»é£æ¶èµ·ï¼å®å¯ä»¥å¨ä»»ä½æ¶åç¨ JavaScript 访é®ç¸åºç
HTMLInputElement对象çvalue屿§ï¼ç¨äºæ¹åææ£ç´¢ãvalue屿§æ»æ¯å¯éçï¼ä¸è¿å¯¹äºcheckboxãradioåhiddenæ¥è¯´ï¼åºè¯¥è¢«è®¤ä¸ºæ¯å¿ é¡»çã width-
ä» å¯¹
imageè¾å ¥æé®ææãwidthæ¯åç°å¨å¾çæäº¤æé®ä¸çå¾ç宽度ãåè§ image è¾å ¥ç±»åã
éæ å屿§
以ä¸éæ å屿§å¨æäºæµè§å¨ä¸å¯ä»¥ä½¿ç¨ãä¸è¬å°ï¼é¤éæ æ³å®ç°ä½ æéè¦çåè½ï¼å¦åä¸è¦ä½¿ç¨å®ä»¬ã
| 屿§ | æè¿° |
|---|---|
incremental |
æ¯å¦éå¤åé search äºä»¶ï¼ä»¥ä¾¿å¨ç¨æ·ä»å¨ç¼è¾åæ®µå¼æ¶æ´æ°å®æ¶æç´¢ç»æãä»
WebKit å Blink éç¨ï¼SafariãChromeãOpera çï¼ã
|
mozactionhint |
å½ç¨æ·å¨ç¼è¾åæ®µæ¶æä¸é®çç Enter æ Return 鮿¶ï¼æéè¦è¿è¡çå¨ä½çå符串表示ï¼è¿ç¨äºå³å®èæé®çä¸é£ä¸ªé®çåéçæ ç¾ãè¯¥å±æ§å·²å¼ç¨ï¼è¯·ä½¿ç¨ |
orient |
设置èå´æ»åçåç°æ¹åãä» Firefox éç¨ã |
results |
䏿èåæ¾ç¤ºçæå¤§æ¥æ¾ç»ææ°éãä» Safari éç¨ã |
webkitdirectory
|
ä¸ä¸ªå¸å°å¼ï¼è¡¨ç¤ºæ¯å¦åªå
è®¸ç¨æ·éæ©ä¸ä¸ªç®å½ï¼æå¤ä¸ªç®å½ï¼å¦æåæ¶åå¨ multiple 屿§ï¼ã
|
incremental-
å¸å°å±æ§
incrementalæ¯ WebKit å Blink çæ©å±ï¼æä»¥ SafariãOperaãChrome ç齿¯æï¼ï¼å¦æåå¨çè¯ï¼å°±ä¼åè¯ç¨æ·ä»£çå°è¾å ¥ä½ä¸ºå®æ¶æç´¢å¤çãå½ç¨æ·ç¼è¾è¯¥å段ç弿¶ï¼ç¨æ·ä»£çå°searchäºä»¶åéå°ä»£è¡¨æç´¢æ¡çHTMLInputElement对象ãè¿ä½¿å¾ä½ ç代ç è½å¤å¨ç¨æ·ç¼è¾æç´¢æ¶å®æ¶æ´æ°æç´¢ç»æãå¦ææ²¡ææå®
incremental屿§ï¼åä» å½ç¨æ·æç¡®åèµ·æç´¢ï¼å¦æä¸é®çä¸ Enter æ Returnï¼æ¶ï¼æä¼åésearchäºä»¶ãsearchäºä»¶æ¯ééçï¼å æ¤å®çåéé¢çä¸ä¼è¶ è¿å®æ½å®ä¹çé´éã orient-
类似äºå½±å
<progress>å<meter>å ç´ çéæ å CSS 屿§ -moz-orientï¼orient屿§å®ä¹èå´æ»åçæ¹åãå¼å æ¬horizontalï¼ä»£è¡¨èå´æ»åæ°´å¹³åç°ï¼åverticalï¼ä»£è¡¨èå´æ»ååç´åç°ãæå ³å建åç´è¡¨åæ§ä»¶çç°ä»£æ¹æ³ï¼è¯·åé å建åç´è¡¨åæ§ä»¶ã results-
åªæ Safari æ¯æç
results屿§æ¯ä¸ä¸ªæ°å¼ï¼å¯ä»¥è®©ä½ è¦ç<input>å ç´ åçæä¾çå åæç´¢æ¥è¯¢ä¸æèå䏿¾ç¤ºçæå¤§æ¡ç®æ°ã该å¼å¿ é¡»æ¯ä¸ä¸ªéè´çåè¿å¶æ°åãå¦ææ²¡ææä¾ï¼æè æä¾äºä¸ä¸ªæ æçå¼ï¼åä½¿ç¨æµè§å¨çé»è®¤æå¤§æ¡ç®æ°ã
webkitdirectory-
å¸å°å±æ§
webkitdirectory妿åå¨ï¼è¡¨ç¤ºå¨æä»¶éåçé¢ä¸ï¼åªæç®å½å¯ä¾ç¨æ·éæ©ãåè§HTMLInputElement.webkitdirectory以äºè§£æ´å¤ç»èåä¾åãè½ç¶æååªä¸ºåºäº WebKit çæµè§å¨å®ç°ï¼ä½
webkitdirectoryä¹å¯ä»¥å¨ Microsoft Edge 以å Firefox 50 åæ´é«çæ¬ä¸ä½¿ç¨ãç¶èï¼å°½ç®¡å®æç¸å¯¹å¹¿æ³çæ¯æï¼å®ä»ç¶ä¸æ¯æ åçï¼é¤éä½ æ²¡æå ¶ä»éæ©ï¼å¦åä¸åºè¯¥ä½¿ç¨ã
æ¹æ³
以䏿¹æ³ç± DOM ä¸ä»£è¡¨ <input> å
ç´ ç HTMLInputElement æ¥å£æä¾ãè¿æä¸äºæ¹æ³æ¯ç±ç¶æ¥å£ HTMLElementãElementãNode å EventTarget æä¾çã
checkValidity()-
妿å ç´ çå¼éè¿äºæææ§æ£æ¥ï¼è¿å
trueï¼å¦åï¼è¿åfalseå¹¶å¨è¯¥å ç´ ä¸è§¦åinvalidäºä»¶ã reportValidity()-
妿å ç´ çå¼éè¿äºæææ§æ£æ¥ï¼è¿å
trueï¼å¦åï¼è¿åfalseå¹¶å¨è¯¥å ç´ ä¸è§¦åinvalidäºä»¶ï¼å¦æäºä»¶æ²¡æåæ¶ï¼å°é®é¢æ¥åç»ç¨æ·ã select()-
妿
<input>å ç´ ä¸çå 容å¯éæ©ï¼åéæ©å ¶ä¸çå ¨é¨å 容ãå¯¹äºæ²¡æå¯ä¾éæ©çæåå 容çå ç´ ï¼å¦å¯è§åé¢è²éæ©å¨ææ¥åæ¥æè¾å ¥ï¼ï¼è¿ä¸ªæ¹æ³ä¸åä»»ä½äºæ ã setCustomValidity()-
妿è¾å ¥å ç´ çå¼ä¸åæ³ï¼è®¾ç½®æ¾ç¤ºçèªå®ä¹ä¿¡æ¯ã
setRangeText()-
å°è¾å ¥å ç´ ä¸æå®çå符èå´çå 容设置为ä¸ä¸ªç»å®çå符串ã
selectModeåæ°å¯ä»¥æ§å¶ç°æå 容å¦ä½è¢«å½±åã setSelectionRange()-
å¨ä¸ä¸ªææ¬è¾å ¥å ç´ ä¸éæ©æå®çå符èå´ã对ä¸ä»¥ææ¬è¾å ¥å段形å¼åºç°çè¾å ¥æ²¡æä»»ä½ä½ç¨ã
showPicker()-
æ¾ç¤ºè¾å ¥å ç´ çæµè§å¨éæ©å¨ï¼è¯¥éæ©å¨é常å¨å ç´ è¢«é䏿¶æ¾ç¤ºï¼ä½å¯éè¿æé®ç¹å»æå ¶ä»ç¨æ·äº¤äºè§¦åã
stepDown()-
é»è®¤æ åµä¸ï¼å°ä¸ä¸ªæ°åè¾å ¥çå¼åå° 1ï¼æåå°æå®çå使°éã
stepUp()-
é»è®¤æ åµä¸ï¼å°ä¸ä¸ªæ°åè¾å ¥çå¼å¢å 1ï¼æå¢å æå®çå使°éã
CSS
è¾å ¥å ç´ ä½ä¸ºè¢«æ¿æ¢çå ç´ ï¼æä¸äºåè½ä¸éç¨äºé表åå ç´ ãæä¸äº CSS éæ©å¨å¯ä»¥æ ¹æ®è¡¨åæ§ä»¶ç UI ç¹å¾ä¸é¨é对å®ä»¬ï¼ä¹è¢«ç§°ä¸º UI 伪类ãè¾å ¥å ç´ ä¹å¯ä»¥ç¨å±æ§éæ©å¨æç±»åå®ä½ãæä¸äºå±æ§ä¹æ¯ç¹å«æç¨çã
UI 伪类
| 伪类 | æè¿° |
|---|---|
:enabled |
ä»»ä½å½åå¯ç¨çå ç´ ï¼å¯ä»¥è¢«æ¿æ´»ï¼éæ©ãç¹å»ãè¾å ¥çï¼ææ¥åç¦ç¹ï¼ä¹æä¸ä¸ªç¦ç¨ç¶æï¼å¨è¿ä¸ªç¶æä¸ï¼å®ä¸è½è¢«æ¿æ´»ææ¥åç¦ç¹ã |
:disabled |
ä»»ä½å½åç¦ç¨çå ç´ é½æä¸ä¸ªå¯ç¨çç¶æï¼è¿æå³ç妿宿²¡æè¢«ç¦ç¨ï¼å®å¯ä»¥è¢«æ¿æ´»ï¼éæ©ãç¹å»ãè¾å ¥ççï¼ææ¥åç¦ç¹ã |
:read-only |
ä¸è½è¢«ç¨æ·ç¼è¾çå ç´ ã |
:read-write |
å¯ä»¥è¢«ç¨æ·ç¼è¾çå ç´ ã |
:placeholder-shown |
å½åæ¾ç¤º placeholder æåçå
ç´ ï¼å
æ¬æ placeholder æ¾ç¤ºï¼å°æªæ¥æå¼ç <input> å <textarea> å
ç´ ã
|
:default |
å¨ä¸ç»ç¸å ³å ç´ ä¸å±äºé»è®¤ç表åå ç´ ãå¹é checkbox å radio å¨é¡µé¢å è½½ææ¸²ææ¶è¢«éä¸çè¾å ¥ç±»åã |
:checked |
å¹é
å½å被éä¸ç checkbox å radio è¾å
¥ç±»åï¼ä»¥åå½å被éä¸ç <select> ä¸ç <option>ï¼ã
|
:indeterminate |
indeterminate 屿§è¢« JavaScript 设置为çç checkbox å
ç´ ï¼è¡¨å䏿æå
·æç¸ååç§°å¼çåéæé®è¢«åæ¶éä¸ç radio å
ç´ ï¼ä»¥åå¤äºä¸ç¡®å®ç¶æç <progress> å
ç´ ã
|
:valid |
å¯ä»¥åºç¨çº¦æéªè¯çè¡¨åæ§ä»¶ï¼å¹¶ä¸å½åæ¯ææçã |
:invalid |
åºç¨äºçº¦ææ¡ä»¶éªè¯çè¡¨åæ§ä»¶ï¼å¹¶ä¸å½åæ¯æ æçãå¹é
ä¸ä¸ªè¡¨åæ§ä»¶ï¼å®çå¼ä¸å®ç屿§è®¾ç½®ççº¦ææ¡ä»¶ä¸ä¸è´ï¼å¦ requiredãpatternãstep å maxã
|
:in-range |
ä¸ä¸ªé空çè¾å
¥ï¼å
¶å½åå¼å¨ min å max 屿§ä»¥å step æå®çèå´éå¶å
ã
|
:out-of-range |
ä¸ä¸ªé空çè¾å
¥ï¼å
¶å½åå¼ä¸å¨ min å max 屿§ä»¥å step æå®çèå´éå¶å
ã
|
:required |
æ required 屿§è®¾ç½®ç <input>ã<select> æ <textarea> å
ç´ ãåªå¹é
å¯ä»¥è¢« required çå
ç´ ï¼ä¸å¹é
ä¸è½è¢« required çå
ç´ ã
|
:optional |
没æ required 屿§è®¾ç½®ç <input>ã<select> æ <textarea> å
ç´ ãåªå¹é
å¯ä»¥è¢« required çå
ç´ ï¼ä¸å¹é
ä¸è½è¢« required çå
ç´ ã
|
:blank |
没æå¼ç <input> å <textarea> å
ç´ ã
|
:user-invalid |
ä¸ :invalid ç¸ä¼¼ï¼ä½æ¯å¨å¤±ç¦çæ
åµä¸æ¿æ´»ãå¹é
æ æçè¾å
¥ï¼ä½åªå¨ç¨æ·äº¤äºä¹åï¼ä¾å¦å
³æ³¨è¯¥æ§ä»¶ã离å¼è¯¥æ§ä»¶æè¯å¾æäº¤å
嫿 ææ§ä»¶ç表åã
|
:open |
<input> å
ç´ ä¼æ¾ç¤ºä¸ä¸ªéæ©å¨ä¾ç¨æ·éæ©å¼ï¼ä¾å¦ <input type="color">ï¼ââä½ä»
å½è¯¥å
ç´ å¤äºæå¼ç¶ææ¶ï¼å³éæ©å¨æ¾ç¤ºæ¶æä¼çæã
|
伪类示ä¾
æä»¬å¯ä»¥æ ¹æ®å¤éæ¡æ¯å¦è¢«é䏿¥ä¸ºå¤éæ¡çæ ç¾æ·»å æ ·å¼ãå¨è¿ä¸ªä¾åä¸ï¼æä»¬å¯¹ç´§è·å¨å¤éè¾å
¥ä¹åç color å font-weight ç <label> è¿è¡æ ·å¼è®¾ç½®ã妿 input 没æéä¸ï¼æä»¬æ²¡æåºç¨ä»»ä½æ ·å¼ã
input:checked + label {
color: red;
font-weight: bold;
}
屿§éæ©å¨
使ç¨å±æ§éæ©å¨ï¼å¯ä»¥æ ¹æ®è¡¨åæ§ä»¶ç type æ¥éå®ä¸åç±»åçè¡¨åæ§ä»¶ãCSS 屿§éæ©å¨åªéæ ¹æ®ä¸ä¸ªå±æ§çå卿ä¸ä¸ªç»å®å±æ§ç弿¥å¹é
å
ç´ ã
/* å¹é
å¯ç è¾å
¥ */
input[type="password"] {
}
/* å¹é
åæ³å¼éå¶å¨ä¸ä¸ªèå´å
çè¡¨åæ§ä»¶ */
input[min][max] {
}
/* å¹é
嫿 pattern 屿§çè¡¨åæ§ä»¶ */
input[pattern] {
}
::placeholder
é»è®¤æ
åµä¸ï¼å ä½ç¬¦ææ¬çå¤è§æ¯åéæææµ
ç°è²ã::placeholder 伪å
ç´ æ¯è¾å
¥ç placeholder ææ¬ãå¯ä»¥ä½¿ç¨æéç CSS 屿§åé为å
¶èµäºæ ·å¼ã
::placeholder {
color: blue;
}
åªæéç¨äº ::first-line 伪å
ç´ ç CSS 屿§åéå¯ä»¥å¨éæ©å¨ä¸ä½¿ç¨ ::placeholder çè§åã
caret-color
ä¸ä¸ªä¸é¨éå¯¹ææ¬è¾å
¥ç¸å
³å
ç´ ç屿§æ¯ CSS caret-color 屿§ï¼å®å¯ä»¥è®©ä½ 设置ç¨äºç»å¶ææ¬è¾å
¥å
æ çé¢è²ï¼
HTML
<label for="textInput">请注æçº¢è²å
æ ï¼</label>
<input id="textInput" class="custom" size="32" />
CSS
input.custom {
caret-color: red;
font:
16px "Helvetica",
"Arial",
"sans-serif";
}
ç»æ
field-sizing
field-sizing 屿§å¯æ§å¶è¡¨åè¾å
¥æ¡ç尺寸è¡ä¸ºï¼å³é»è®¤æ
åµä¸ä¸ºå
¶åé
é¦é尺寸ï¼ãè¯¥å±æ§å
许è¦çé»è®¤è¡ä¸ºï¼ä½¿è¡¨åæ§ä»¶è½å¤æ ¹æ®å
容èªå¨è°æ´å°ºå¯¸ã
è¯¥å±æ§é常ç¨äºå建è½ç´§è´´å
容缩æ¾ãéææ¬è¾å
¥å¢é¿ç表ååæ®µãéç¨äºæ¥åç´æ¥ææ¬è¾å
¥çè¾å
¥ç±»åï¼ä¾å¦ text å url)ãè¾å
¥ç±»å file 以å <textarea> å
ç´ ã
object-position å object-fit
å¨æäºæ
åµä¸ï¼é常æ¶åéææ¬è¾å
¥åä¸é¨ççé¢ï¼ï¼<input> å
ç´ æ¯ä¸ä¸ªå¯æ¿æ¢å
ç´ ãå½å®ä¸ºæ¿æ¢å
ç´ æ¶ï¼è¯¥å
ç´ å¨å
¶æ¡æ¶å
çä½ç½®å大å°å¯ä»¥ä½¿ç¨ CSS object-position å object-fit 屿§æ¥è°æ´ã
èµäºæ ·å¼
å ³äºå¨ HTML ä¸ä¸ºå ç´ æ·»å é¢è²çæ´å¤ä¿¡æ¯ï¼åè§ï¼
è¿å¯ä»¥åèï¼
é¢å¤ç¹æ§
>æ ç¾
éè¦æ ç¾æ¥å°è¾
婿§ææ¬ä¸ <input> è系起æ¥ã<label> å
ç´ æä¾äºå
³äºä¸ä¸ªè¡¨ååæ®µçéåçè§£éä¿¡æ¯ï¼é¤äºä»»ä½å¸å±æ¹é¢çèèï¼ãä½¿ç¨ <label> è§£éè¾å
¥è³ <input> æ <textarea> çå
å®¹æ»æ¯å¥½çã
å ³èæ ç¾
<input> å <label> å
ç´ çè¯ä¹é
对对äºå±å¹é
读å¨çè¾
å©ææ¯æ¯å¾æç¨çãéè¿ä½¿ç¨ <label> ç for 屿§å¯¹å®ä»¬è¿è¡é
对ï¼å¯ä»¥å°æ ç¾ä¸è¾å
¥ç»åèµ·æ¥ï¼è®©å±å¹é
è¯»å¨æ´ç²¾ç¡®å°æè¿°è¾å
¥ã
ä»
ä»
å¨ <input> å
ç´ æè¾¹æçº¯ææ¬æ¯ä¸å¤çãç¸åï¼å¯ç¨æ§åæ éç¢æ§è¦æ±å
å«é弿æ¾å¼ <label>ï¼
<!-- éæ éç¢ç -->
<p>è¾å
¥ä½ çååï¼<input id="name" type="text" size="30" /></p>
<!-- é弿 ç¾ -->
<p>
<label>è¾å
¥ä½ çååï¼<input id="name" type="text" size="30" /></label>
</p>
<!-- æ¾å¼æ ç¾ -->
<p>
<label for="name">è¾å
¥ä½ çååï¼</label>
<input id="name" type="text" size="30" />
</p>
第ä¸ä¸ªç¤ºä¾æ²¡ææ éç¢æ§ï¼æç¤ºå <input> å
ç´ æ²¡æå
³ç³»ã
é¤äºæ éç¢åç§°å¤ï¼æ ç¾è¿æä¾äºä¸ä¸ªæ´å¤§çâå½ä¸âåºåï¼ä¾é¼ æ å触æ¸å±ç¨æ·ç¹å»æè§¦æ¸ãéè¿å° <label> å <input> é
对ï¼ç¹å»ä»»ä½ä¸ä¸ªå
ç´ å°èç¦ <input> å
ç´ ãå¦æä½ ä½¿ç¨çº¯ææ¬æ¥ç»ä½ çè¾å
¥å
ç´ ä½âæ ç¾âï¼å°ä¸ä¼äº«åå°ä»¥ä¸ç¹æ§ãå°æ¿æ´»åºçæç¤ºé¨åç¨äºè¾å
¥ï¼å¯¹æè¿å¨æ§å¶æ¡ä»¶çäººæ¯æå¸®å©çã
ä½ä¸º web å¼åè ï¼æä»¬æ°¸è¿ä¸è¦åå®ä½¿ç¨è ç¥éææçäºæ ãä½¿ç¨ web ç人ç夿 ·æ§ââå¯è½å»¶ä¼¸å°ä½ çç½ç«ä¸ââå®é ä¸ä¿è¯äºä½ çç½ç«çä¸äºè®¿é®è å¨æç»´è¿ç¨å/ææ åµä¸ä¼æä¸äºååï¼å¯¼è´ä»ä»¬å¨æ²¡ææç¡®åéå½çæ ç¾çæ åµä¸å¯¹ä½ ç表åæé常ä¸åçè§£éã
å ä½ç¬¦ä¸å ·ææ éç¢æ§
placeholder 屿§å¯ä»¥è®©ä½ æå®å¨ <input> å
ç´ çå
容åºåæ¬èº«ä¸ºç©ºæ¶åºç°çææ¬ãä¸åºè¯¥ä¾é å ä½ç¬¦å»ç解表åãå®ä¸æ¯ä¸ä¸ªæ ç¾ï¼ä¹ä¸åºè¯¥è¢«ç¨æ¥æ¿ä»£ãå ä½ç¬¦æ¯ç¨æ¥æç¤ºè¾å
¥çå¼åºè¯¥æ¯ä»ä¹æ ·åï¼è䏿¯è§£éã
ä¸ä»
å±å¹é
è¯»å¨æ æ³è®¿é®å ä½ç¬¦ï¼èä¸ä¸æ¦ç¨æ·å¨è¡¨åæ§ä»¶ä¸è¾å
¥ä»»ä½ææ¬ï¼æè
å¦æè¡¨åæ§ä»¶å·²ç»æä¸ä¸ªå¼ï¼å ä½ç¬¦å°±ä¼æ¶å¤±ãå
·æèªå¨é¡µé¢ç¿»è¯åè½çæµè§å¨å¨ç¿»è¯æ¶å¯è½ä¼è·³è¿å±æ§ï¼è¿æå³ç placeholder å¯è½ä¸ä¼è¢«ç¿»è¯ã
夿³¨ï¼å°½å¯è½ä¸è¦ä½¿ç¨ placeholder 屿§ã妿éè¦æ è®° <input> å
ç´ ï¼è¯·ä½¿ç¨ <label> å
ç´ ã
客æ·ç«¯éªè¯
è¦åï¼å®¢æ·ç«¯éªè¯æ¯æç¨çï¼ä½å®å¹¶ä¸è½ä¿è¯æå¡å¨ä¼æ¶å°ææçæ°æ®ãå¦ææ°æ®å¿
é¡»æ¯ç¹å®çæ ¼å¼ï¼æ»æ¯åºè¯¥å¨æå¡å¨ç«¯è¿è¡éªè¯ï¼å¦ææ ¼å¼æ æï¼åè¿åä¸ä¸ª 400 HTTP ååºã
é¤äºå¦ä¸æ UI 伪类é¨åæè¿°ï¼ä½¿ç¨ CSS æ ¹æ® :valid æ :invalid æ¯ä¸ªè¾å
¥çå½åç¶ææ¥è®¾è®¡è¾å
¥çæ ·å¼ä¹å¤ï¼æµè§å¨è¿å¨ï¼è¯å¾ï¼æäº¤è¡¨åæ¶æä¾äºå®¢æ·ç«¯éªè¯ãå¨è¡¨åæäº¤æ¶ï¼å¦ææä¸ä¸ªè¡¨åæ§ä»¶æ²¡æéè¿çº¦æéªè¯ï¼æ¯æçæµè§å¨å°å¨ç¬¬ä¸ä¸ªæ æçè¡¨åæ§ä»¶ä¸æ¾ç¤ºä¸ä¸ªé误信æ¯ï¼æ ¹æ®éè¯¯ç±»åæ¾ç¤ºä¸ä¸ªé»è®¤ä¿¡æ¯ï¼æè
ç±ä½ 设置çä¿¡æ¯ã
æäºè¾å
¥ç±»ååå
¶ä»å±æ§å¯¹ç¹å®è¾å
¥çææå¼è¿è¡äºéå¶ãä¾å¦ï¼<input type="number" min="2" max="10" step="2"> æå³çåªææ°å 2ã4ã6ã8 æ 10 ææãæäºé误å¯è½åçï¼å½å¼å°äº 2 æ¶ä¼åç rangeUnderflow é误ï¼å¼å¤§äº 10 æ¶ä¼åç rangeOverflow é误ï¼å½å¼å¨ 2 è³ 10 ä¹é´ï¼ä½ä¸æ¯å¶æ°ï¼ä¸æ»¡è¶³ step 屿§çéæ±ï¼æ¶ä¼åç stepMismatch é误ï¼å¦æå¼ä¸æ¯ä¸ä¸ªæ°åæ¶ä¼åç typeMismatch é误ã
对äºå¯è½çå¼åæ¯å¨ææ§çè¾å
¥ç±»åï¼ä¹å°±æ¯è¯´ï¼å¨å¯è½çæé«å¼æ¶ï¼å¼ä¼ç»åå¼å§è䏿¯ç»æï¼ï¼max å min 屿§ç弿å¯è½æ¯ç¸åçï¼è¿è¡¨æå
许çå¼èå´ä» min å¼å§ï¼ç»å°å¯è½çæä½å¼ï¼ç¶åç»§ç»ä¸å»ç´å°è¾¾å° maxãè¿å¯¹æ¥æåæ¶é´ç¹å«æç¨ï¼æ¯å¦ä½ æ³è®©èå´ä»æä¸ 8 ç¹å°æ©ä¸ 8 ç¹ï¼
<input type="time" min="20:00" max="08:00" name="overnight" />
ç¹å®ç屿§åå®ä»¬çå¼ä¼å¯¼è´ä¸ä¸ªç¹å®çé误 ValidityStateï¼
| 屿§ | ç¸å ³å±æ§ | æè¿° |
|---|---|---|
max |
validityState.rangeOverflow |
å½å¼å¤§äº max 屿§æå®ä¹çæå¤§å¼æ¶åç
|
maxlength |
validityState.tooLong |
å½å符æ°å¤§äº maxlength 屿§æå
è®¸çæ°éæ¶åç
|
min |
validityState.rangeUnderflow |
å½å¼å°äº min 屿§æå®ä¹çæå°å¼æ¶åç
|
minlength |
validityState.tooShort |
å½å符æ°å°äº minlength 屿§æå
è®¸çæ°éæ¶åç
|
pattern |
validityState.patternMismatch |
彿¨¡å¼å±æ§å
å«ä¸ä¸ªææçæ£å表达å¼ï¼è value ä¸ä¹ä¸å¹é
æ¶åç
|
required |
validityState.valueMissing |
å½ required å卿¶ï¼ä½æ¯å¼ä¸º null æåéé®ãå¤éæ¡æªé䏿¶åç
|
step |
validityState.stepMismatch |
å¼ä¸æ»¡è¶³æ¥è¿å¢éãå¢éé»è®¤å¼ä¸º 1ï¼æä»¥å¯¹äº type="number" æ¥è¯´ï¼åªææ´æ°æææï¼step="any" æ°¸è¿ä¸ä¼æåºè¿ä¸ªé误ã
|
type |
validityState.typeMismatch |
å½å¼çç±»å䏿£ç¡®æ¶åçï¼ä¾å¦ï¼çµåé®ä»¶ä¸å
å« @ï¼æè
ä¸å
å«åè®®ç urlã
|
妿ä¸ä¸ªè¡¨åæ§ä»¶æ²¡æ required 屿§ï¼æ²¡æå¼ï¼æè
æ¯ä¸ä¸ªç©ºå符串ï¼é½ä¸æ¯æ æçãå³ä½¿ä¸è¿°å±æ§åå¨ï¼é¤äº required ä¹å¤ï¼å空å符串ä¹ä¸ä¼å¯¼è´é误ã
æä»¬å¯ä»¥å¯¹æ¥åçå¼è¿è¡éå¶ï¼æ¯æçæµè§å¨ä¼å¯¹è¿äºè¡¨åçæ°å¼è¿è¡åçéªè¯ï¼å¹¶å¨è¡¨åæäº¤æ¶æéç¨æ·æ¯å¦æé误ã
é¤äºä¸è¡¨ä¸æè¿°çé误å¤ï¼validityState æ¥å£è¿å
å« badInputãvalid å customError å¸å°å¼åªè¯»å±æ§ãæææ§å¯¹è±¡å
æ¬ï¼
validityState.valueMissingvalidityState.typeMismatchvalidityState.patternMismatchvalidityState.tooLongvalidityState.tooShortvalidityState.rangeUnderflowvalidityState.rangeOverflowvalidityState.stepMismatchvalidityState.badInputvalidityState.validvalidityState.customError
对äºè¿äºå¸å°å±æ§ä¸çæ¯ä¸ä¸ªï¼å¼ä¸º true 表示æå®çéªè¯å¯è½å¤±è´¥çåå æ¯çå®çï¼ä½ valid 屿§é¤å¤ï¼å¦æå
ç´ ç弿仿æç约æï¼å为 trueã
妿æéè¯¯ï¼æ¯æçæµè§å¨ä¼æéç¨æ·ï¼å¹¶é»æ¢è¡¨åçæäº¤ãéè¦æ³¨æçæ¯ï¼å¦æèªå®ä¹é误被设置为ä¸ä¸ªçå¼ï¼é¤äºç©ºå符串æ null 以å¤çä»»ä½å¼ï¼ï¼è¡¨åå°è¢«é»æ¢æäº¤ãå¦ææ²¡æèªå®ä¹é误信æ¯ï¼å¹¶ä¸å
¶ä»å±æ§é½æ²¡æè¿åçå¼ï¼é£ä¹ valid å°ä¸ºçï¼è¡¨åå¯ä»¥è¢«æäº¤ã
function validate(input) {
let validityState_object = input.validity;
if (validityState_object.valueMissing) {
input.setCustomValidity("éè¦ä¸ä¸ªå¼");
} else if (validityState_object.rangeUnderflow) {
input.setCustomValidity("å¼å¤ªå°äº");
} else if (validityState_object.rangeOverflow) {
input.setCustomValidity("å¼å¤ªå¤§äº");
} else {
input.setCustomValidity("");
}
}
æåä¸è¡ï¼å°èªå®ä¹çæææ§ä¿¡æ¯è®¾ç½®ä¸ºç©ºå符串æ¯è³å
³éè¦çãå¦æç¨æ·åºéï¼èæææ§è¢«è®¾ç½®ï¼å³ä½¿ææçå¼é½æ¯ææçï¼ä¹ä¼æäº¤å¤±è´¥ï¼ç´å°æ¶æ¯ä¸º nullã
èªå®ä¹éªè¯é误示ä¾
å¦æä½ æ³å¨ä¸ä¸ªå段éªè¯å¤±è´¥æ¶æ¾ç¤ºä¸ä¸ªèªå®ä¹çé误信æ¯ï¼ä½ éè¦ä½¿ç¨çº¦æéªè¯ APIï¼å¨ <input>ï¼åç¸å
³ï¼å
ç´ ä¸å¯ç¨ã以ä¸é¢çè¡¨æ ¼ä¸ºä¾ï¼
<form>
<label for="name">è¾å
¥ç¨æ·åï¼å
许使ç¨å¤§å°å忝ï¼ï¼</label>
<input type="text" name="name" id="name" required pattern="[A-Za-z]+" />
<button>æäº¤</button>
</form>
å¦æä½ è¯å¾æäº¤çè¡¨åæ²¡æå¡«åææçå
å®¹ï¼æè
æ¯ä¸ä¸ªä¸ç¬¦å pattern çå¼ï¼åºæ¬ç HTML 表åéªè¯åè½å°ä½¿å
¶äº§çä¸ä¸ªé»è®¤çé误信æ¯ã
å¦æä½ æ³è½¬èæ¾ç¤ºèªå®ä¹çé误信æ¯ï¼ä½ å¯ä»¥ä½¿ç¨ä¸é¢è¿æ ·ç JavaScript 代ç ï¼
const nameInput = document.querySelector("input");
nameInput.addEventListener("input", () => {
nameInput.setCustomValidity("");
nameInput.checkValidity();
});
nameInput.addEventListener("invalid", () => {
if (nameInput.value === "") {
nameInput.setCustomValidity("è¾å
¥ä¸ä¸ªç¨æ·åï¼");
} else {
nameInput.setCustomValidity("ç¨æ·ååªè½å
å«å¤§åæå°å忝ï¼è¯·åè¯ä¸éã");
}
});
æ¤ç¤ºä¾ä¼åè¿æ ·æ¸²æï¼
ç®åæ¥è¯´ï¼
- æ¯æ¬¡è¾å
¥å
ç´ çå¼åçååæ¶ï¼æä»¬éè¿
inputäºä»¶å¤çç¨åºè¿è¡checkValidity()æ¹æ³æ¥æ£æ¥å ¶ææç¶æã - 妿弿¯æ æçï¼ä¼å¼å
invalidäºä»¶ï¼è¿è¡invalidäºä»¶å¤ç彿°ãå¨è¿ä¸ªå½æ°ä¸ï¼æä»¬ä½¿ç¨if()忥å³å®å¼æ ææ¯å ä¸ºå®æ¯ç©ºçï¼è¿æ¯å 为å®ä¸ç¬¦å模å¼ï¼å¹¶è®¾ç½®ä¸ä¸ªèªå®ä¹çæææ§é误信æ¯ã - å æ¤ï¼å¦æå¨æä¸æäº¤æé®æ¶ï¼è¾å ¥å¼æ¯æ æçï¼å°æ¾ç¤ºå ¶ä¸ä¸ä¸ªèªå®ä¹é误信æ¯ã
- 妿宿¯ææçï¼å®å°±ä¼åä½ æææç飿 ·æäº¤ãè¦åå°è¿ä¸ç¹ï¼å¿
须忶èªå®ä¹çæææ§ï¼éè¿ä½¿ç¨ç©ºå符串è°ç¨
setCustomValidity()æ¥å®ç°ãæä»¬å¨æ¯æ¬¡inputäºä»¶åçæ¶é½è¦è¿æ ·åãå¦æä½ ä¸è¿æ ·åï¼å¹¶ä¸ä¹å设置äºä¸ä¸ªèªå®ä¹çæææ§ï¼é£ä¹è¾å ¥å°ä¼è®¤ä¸ºæ æï¼å³ä½¿å®ç®åå å«ä¸ä¸ªææçæäº¤å¼ã
夿³¨ï¼å§ç»å¨å®¢æ·ç«¯åæå¡å¨ç«¯éªè¯è¾å ¥çº¦æã约æéªè¯å¹¶ä¸è½æ¶é¤å¨æå¡å¨ç«¯è¿è¡éªè¯çå¿ è¦æ§ãæ æçå¼ä»ç¶å¯ä»¥ç±æ§çæµè§å¨æåçè¡ä¸ºè åéã
夿³¨ï¼Firefox å¨è®¸å¤çæ¬ä¸æ¯æä¸ä¸ªä¸æçéè¯¯å±æ§ââx-moz-errormessageï¼å®å
è®¸ä½ ä»¥ç±»ä¼¼çæ¹å¼è®¾ç½®èªå®ä¹é误信æ¯ãä»çæ¬å· 66 å¼å§ï¼è¿ä¸ªå±æ§å·²è¢«ç§»é¤ï¼è§ Firefox bug 1513890ï¼ã
æ¬å°å
æäº <input> ç±»åæå
许çè¾å
¥æ¹å¼åå³äºå½å°çè¯è¨ã卿äºå°åºï¼1,000.00 æ¯ä¸ä¸ªææçæ°åï¼èå¨å
¶ä»å°åºï¼è¾å
¥è¿ä¸ªæ°åçæææ¹å¼æ¯ 1.000,00ã
Firefox 使ç¨ä»¥ä¸å¯å弿¹æ³æ¥ç¡®å®éªè¯ç¨æ·è¾å
¥çè¯è¨ï¼è³å°å¯¹äº type="number"ï¼ã
- å°è¯è¯¥å
ç´ æå
¶ä»»ä½ç¶å
ç´ ä¸ç
lang/xml:lang屿§ææå®çè¯è¨ã - å°è¯ä»»ä½
Content-LanguageHTTP 头ææå®çè¯è¨ãæè ï¼ - å¦ææ²¡ææå®ï¼åä½¿ç¨æµè§å¨çåºå设置ã
æ éç¢
>æ ç¾
å¨å å«è¾å ¥æ¡æ¶ï¼æ·»å æ ç¾æ¯æ éç¢è¦æ±ãæ¤ä¸¾æ¨å¨è®©è¾ 婿æ¯ä½¿ç¨è æç¡®è¾å ¥æ¡ç¨éãæ¤å¤ï¼ç¹å»æè§¦æ¸æ ç¾ä¼å°ç¦ç¹è½¬ç§»è³å ³èçè¡¨åæ§ä»¶ï¼è¿æ¢æåäºè§éç¨æ·çæ éç¢ä½éªï¼ä¹æ©å¤§äºç¨æ·å¯ç¹å»/触æ¸çæä½åºåã对äºå°ºå¯¸å¾®å°çåéæé®åå¤éæ¡èè¨ï¼æ¤è®¾è®¡å°¤ä¸ºéè¦ï¼çè³ä¸å¯æç¼ºï¼ãæå ³æ ç¾çéç¨ä¿¡æ¯ï¼è¯·åé æ ç¾ã
以ä¸ç¤ºä¾å±ç¤ºäºå¦ä½ä»¥ä¸è¿°æ ·å¼å
³è <label> ä¸ <input> å
ç´ ï¼é为 <input> æ·»å id 屿§ï¼<label> åé设置 for 屿§ï¼å
¶å¼åºä¸è¾å
¥æ¡ç id ä¸è´ã
<label for="peas">ä½ åæ¬¢è±è±åï¼</label>
<input type="checkbox" name="peas" id="peas" />
尺寸
交äºå ç´ ï¼å¦è¡¨åè¾å ¥æ¡ï¼åºæä¾è¶³å¤å¤§çåºåä»¥ä¾¿è½»æ¾æ¿æ´»ãè¿æå©äºå类人群ï¼å æ¬åå¨è¿å¨æ§å¶éç¢è ï¼ä»¥å使ç¨è§¦æ§ç¬æææçé精确è¾å ¥æ¹å¼çç¨æ·ã建议æå°äº¤äºåºå尺寸为 44Ã44 CSS åç´ ã
ææ¯æ¦è¦
| å 容åç±» |
æµå¼å
容ãå表å
ç´ ãå¯æäº¤å
ç´ ãå¯é设å
ç´ ã表åç¸å
³å
ç´ çè¯å
容ã妿 type 䏿¯ hidden çï¼å乿¯å¯æ ç¾å
ç´ ã坿ç¥å
容ã
|
|---|---|
| å 许å 容 | æ ï¼è¿æ¯ä¸ä¸ªç©ºå ç´ ã |
| æ ç¾çç¥ | å¿ é¡»æå¼å§æ ç¾ï¼ä¸å¯ä»¥æç»ææ ç¾ã |
| å 许çç¶å ç´ | 任使¥åçè¯å 容çå ç´ ã |
| éå¼ ARIA è§è² |
|
| å 许ç ARIA è§è² |
|
| DOM æ¥å£ | HTMLInputElement |
è§è
| è§è |
|---|
| HTML > # the-input-element > |