Baseline Widely available
tel
ç±»åç <input>
å
ç´ ç¨äºè®©ç¨æ·è¾å
¥åç¼è¾çµè¯å·ç ãä¸åäº <input type="email">
å <input type="url">
ï¼å¨æäº¤è¡¨åä¹åï¼è¾å
¥å¼ä¸ä¼è¢«èªå¨éªè¯ä¸ºç¹å®æ ¼å¼ï¼å 为ä¸çåå°ççµè¯å·ç æ ¼å¼å·®å«å¾å¤§ã
<label for="phone">
Enter your phone number:<br />
<small>Format: 123-456-7890</small>
</label>
<input
type="tel"
id="phone"
name="phone"
pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}"
required />
label {
display: block;
font:
1rem "Fira Sans",
sans-serif;
}
input,
label {
margin: 0.4rem 0;
}
尽管 tel
ç±»åçè¾å
¥å¨åè½ä¸å text
è¾å
¥ä¸è´ï¼ä½å®ä»¬ç¡®å®æç¨ï¼å
¶ä¸æææ¾çå°±æ¯ç§»å¨æµè§å¨ï¼ç¹å«æ¯å¨ææºä¸ï¼ï¼å¯è½ä¼éæ©æä¾ä¸ºè¾å
¥çµè¯å·ç èä¼åçèªå®ä¹é®çã使ç¨çµè¯å·ç çç¹å®è¾å
¥ç±»åä¹ä½¿æ·»å èªå®ä¹éªè¯åå¤ççµè¯å·ç æ´æ¹ä¾¿ã
夿³¨ï¼ 䏿¯æ tel
ç±»åçæµè§å¨ä¼åé为æ å text ç±»åè¾å
¥ã
<input id="telNo" type="tel" />
å¼
<input>
å
ç´ ç value
屿§å
å«è¡¨ç¤ºä¸ä¸ªçµè¯å·ç çå符串æè
ä¸ä¸ªç©ºå符串ï¼""
ï¼ã
é¤äºå¯¹ <input>
å
ç´ çæçéç¨å±æ§å¤ï¼çµè¯å·ç è¾å
¥æ¡è¿æ¯æä»¥ä¸å±æ§ã
list 屿§ç弿¯ä½äºåä¸ææ¡£ä¸ç <datalist>
å
ç´ ç id
ã<datalist>
æä¾äºä¸ä¸ªé¢å®ä¹çå¼å表ï¼åç¨æ·å»ºè®®åè¿ä¸ªè¾å
¥æ¡è¾å
¥çå¼ãå表ä¸ä»»ä½ä¸ type
ä¸å
¼å®¹çå¼é½ä¸å
æ¬å¨å»ºè®®é项ä¸ãææä¾ç弿¯å»ºè®®ï¼å¹¶ä¸æ¯å¿
éçï¼ç¨æ·å¯ä»¥ä»è¿ä¸ªé¢å®ä¹çå表ä¸éæ©ï¼æè
æä¾ä¸åçå¼ã
ç¨æ·å¯ä»¥å¨çµè¯å·ç åæ®µä¸è¾å
¥çæå¤§å符æ°ï¼ä½ä¸º UTF-16 ç¼ç åä½ï¼ãè¿å¿
é¡»æ¯ä¸ä¸ªä¸ä½äº 0 çæ´æ°å¼ãå¦ææ²¡ææå® maxlength
ï¼æè
æå®äºä¸ä¸ªæ æçå¼ï¼åçµè¯å·ç åæ®µæ²¡ææå¤§é¿åº¦ãè¿ä¸ªå¼ä¹å¿
é¡»å¤§äºæçäº minlength
çå¼ã
妿è¾å
¥åæ®µçææ¬é¿åº¦å¤§äº maxlength
UTF-16 ç¼ç åä½é¿åº¦ï¼åè¾å
¥å°æ æ³éè¿çº¦æéªè¯ã
ç¨æ·å¯ä»¥å¨çµè¯å·ç åæ®µä¸è¾å
¥çæå°å符æ°ï¼ä½ä¸º UTF-16 ç¼ç åä½ï¼ãè¿å¿
é¡»æ¯ä¸ä¸ªå°äºæçäº maxlength
ææå®çå¼çéè´æ´æ°ãå¦ææ²¡ææå® minlength
ï¼æè
æå®äºä¸ä¸ªæ æçå¼ï¼çµè¯å·ç çè¾å
¥å°±æ²¡ææå°é¿åº¦ã
妿è¾å
¥åæ®µçææ¬é¿åº¦å°äº maxlength
UTF-16 ç¼ç åä½é¿åº¦ï¼åè¾å
¥å°æ æ³éè¿çº¦æéªè¯ã
妿æå®äº pattern
屿§ï¼å该 input ç value
å°å¿
é¡»è¦æ»¡è¶³å
¶ææå®çæ£å表达å¼ï¼ä»¥éè¿çº¦æéªè¯ãå®å¿
é¡»æ¯ä¸ä¸ªåæ³ç RegExp
ç±»å JavaScript æ£å表达å¼ï¼å
¶å
·ä½ä½¿ç¨æ¹æ³è®°è½½å°äºæä»¬çæ£åè¡¨è¾¾å¼æåä¸ãå¨ç¼è¯æ£åè¡¨è¾¾å¼æ¶ï¼ä½¿ç¨äº 'u'
æ å¿ï¼æ
ææå®æ¨¡å¼å°è§ä¸º Unicode ç ç¹ï¼èé ASCIIã卿¨¡å¼ææ¬ä¸ï¼ä¸å¯ä»¥æå®æ£ææ 符å·ã
å ·ä½ä»ç»å示ä¾è¯·åé æ¨¡å¼éªè¯é¨åã
placeholderplaceholoder
屿§æ¯ä¸ä¸ªå符串ï¼å®åç¨æ·æä¾ä¸ä¸ªç®ççæç¤ºï¼è¯´æè¯¥å段é¢è®¡ä¼æä»ä¹æ ·çä¿¡æ¯ãå®åºè¯¥æ¯ä¸ä¸ªæ¾ç¤ºé¢ææ°æ®ç±»åçåè¯æçè¯ï¼è䏿¯ä¸ä¸ªè§£éæ§çä¿¡æ¯ãè¯¥ææ¬ä¸å¾å
æ¬åè½¦ææ¢è¡ã
妿æ§ä»¶çå å®¹å ·ææ¹åï¼LTR æ RTLï¼ï¼ä½éè¦ä»¥ç¸åçæ¹åæ§åç°å ä½ç¬¦ï¼å¯ä»¥ä½¿ç¨ Unicode ååç®æ³æ ¼å¼åå符æ¥è¦çå ä½ç¬¦å çæ¹åæ§ï¼æ´å¤ä¿¡æ¯è¯·åè§å¦ä½ä½¿ç¨ Unicode æ§ä»¶å¤ç bidi ææ¬ã
夿³¨ï¼ 妿å¯ä»¥çè¯ï¼é¿å
ä½¿ç¨ placeholder
屿§ãå®å¨è¯ä¹ä¸ä¸å¦å
¶ä»è§£é表åçæ¹å¼æç¨ï¼èä¸ä¼å¯¹ä½ çå
å®¹é æææ³ä¸å°çææ¯é®é¢ãåè§ <input>
æ ç¾è·åæ´å¤ä¿¡æ¯ã
ä¸ä¸ªå¸å°å±æ§ï¼å¦æåå¨ï¼æå³çè¿ä¸ªå段ä¸è½è¢«ç¨æ·ç¼è¾ã使¯ï¼å®ç value
ä»ç¶å¯ä»¥ç± JavaScript 代ç éè¿è®¾ç½® HTMLInputElement
ç value
屿§æ¥æ¹åã
夿³¨ï¼ ç±äºåªè¯»å段ä¸å¯ä»¥æ¥æå¼ï¼required
对æå®äº readonly
屿§çè¾å
¥å段ä¸èµ·ä½ç¨ã
size
屿§æ¯ä¸ä¸ªæ°å¼ï¼è¡¨ç¤ºè¾å
¥å段åºè¯¥æå¤å°ä¸ªå符宽ã该å¼å¿
é¡»æ¯ä¸ä¸ªå¤§äº 0 çæ°åï¼é»è®¤å¼æ¯ 20ãç±äºå符ç宽度åä¸ç¸åï¼è¯¥å¼å¯è½å¹¶ä¸ç²¾ç¡®ï¼èä¸ä¸åºè¯¥ä¾èµäºæ¤ï¼ç»æè¾å
¥å¯è½æ¯æå®çåç¬¦æ°æ´çªææ´å®½ï¼è¿åå³äºä½¿ç¨ä¸çå符ååä½ï¼font
ï¼è®¾ç½®ã
è¿å¹¶ä¸æ¯å¯¹ç¨æ·å¯ä»¥å¨è¯¥å段ä¸è¾å
¥å¤å°ä¸ªå符çéå¶ãå®åªæ¯æå®äºä¸æ¬¡å¤§çº¦å¯ä»¥çå°å¤å°ä¸ªãè¦è®¾ç½®è¾å
¥æ°æ®çé¿åº¦ä¸éï¼è¯·ä½¿ç¨ maxlength
屿§ã
以ä¸éæ å屿§å¯ç¨äºçµè¯å·ç è¾å ¥å段ãä¸è¬æ¥è¯´ï¼ä½ åºè¯¥é¿å 使ç¨å®ä»¬ï¼é¤é没æåæ³ã
autocorrectSafari çæ©å±ï¼autocorrect
屿§æ¯ä¸ä¸ªå符串ï¼è¡¨ç¤ºå¨ç¨æ·ç¼è¾è¿ä¸ªåæ®µæ¶æ¯å¦è¦æ¿æ´»èªå¨æ´æ£ãå
许ç弿ï¼
on
å¯ç¨èªå¨æ´æ£åä»»ä½é ç½®çææ¬æ¿æ¢å¤çã
off
ç¦ç¨èªå¨æ´æ£åææ¬æ¿æ¢ã
Mozilla çæ©å±ï¼å½ç¨æ·ç¼è¾è¯¥åæ®µæ¶æä¸é®çç Enter æ Return 鮿¶ï¼æä¾çæä½å¸®å©ã
è¯¥å±æ§å·²ç»åºå¼ï¼ä½ä¸ºæ¿ä»£ï¼è¯·ä½¿ç¨å
¨å±å±æ§ enterkeyhint
ã
çµè¯å·ç æ¯ç½ç»ä¸é常æ®éæ¶éçæ°æ®ç±»åãä¾å¦ï¼å¨å建任ä½ç±»åçæ³¨åæçµååå¡ç½ç«æ¶ï¼æ 论åºäºåä¸ç®çè¿æ¯åºäºç´§æ¥èç³»ç®çï¼ä½ é½å¯è½éè¦åç¨æ·ç´¢è¦çµè¯å·ç ãé´äºé常è¾å ¥ççµè¯å·ç æ¯å¤å°ï¼ä¸å¹¸çæ¯ï¼ç¨äºéªè¯çµè¯å·ç çâä¸ååâè§£å³æ¹æ¡æ¯ä¸å®é çã
幸è¿çæ¯ï¼ä½ å¯ä»¥èèèªå·±ç½ç«çè¦æ±ï¼å¹¶èªè¡å®æ½éå½çéªè¯çº§å«ãæå ³è¯¦ç»ä¿¡æ¯ï¼è¯·åé ä¸é¢çéªè¯é¨åã
èªå®ä¹é®ç<input type="tel">
主è¦ä¼å¿æ¯å®å¯ä»¥å¨ç§»å¨æµè§å¨æ¾ç¤ºä¸ä¸ªç¹æ®ççµè¯å·ç è¾å
¥é®çã以䏿¯ä¸äºè®¾å¤ä¸é®ççå¤è§ã
å¨æåºæ¬çå½¢å¼ä¸ï¼tel è¾å ¥å¯ä»¥è¿æ ·å®ç°ï¼
<label for="telNo">çµè¯å·ç ï¼</label>
<input id="telNo" name="telNo" type="tel" />
è¿é没æä»ä¹ç¥å¥çäºæ
åçãå½æäº¤ç»æå¡å¨æ¶ï¼ä¸è¿°è¾å
¥çæ°æ®å°è¢«è¡¨ç¤ºä¸º telNo=+12125553151
ã
ææ¶åæä¾å
³äºè¾å
¥æ°æ®åºè¯¥éç¨ä»ä¹å½¢å¼çä¸ä¸ææç¤ºæ¯å¾æå¸®å©çã妿页é¢è®¾è®¡æ²¡æä¸ºæ¯ä¸ª <input>
é¡µé¢æä¾æè¿°æ§æ ç¾ï¼è¿å¯è½æ¯ç¹å«éè¦çãæä»¥éè¦å ä½ç¬¦ãä¸ä¸ªå ä½ç¬¦æ¯ä¸ä¸ªå¼ï¼å®éè¿æä¾ä¸ä¸ªææå¼çä¾åæ¥æ¼ç¤ºå¼çå½¢å¼ï¼å½å
ç´ ç弿¯""
æ¶ï¼å®æ¾ç¤ºå¨ç¼è¾æ¡ä¸ã䏿¦æ°æ®è¾å
¥æ¡ä¸ï¼å ä½ç¬¦å°±ä¼æ¶å¤±ï¼å¦æè¯¥æ¡è¢«æ¸
空ï¼å ä½ç¬¦ä¼éæ°åºç°ã
å¨è¿éï¼æä»¬ç tel
è¾å
¥çå ä½ç¬¦æ¯ 123-4567-8901
ã请注æå ä½ç¬¦å¦ä½æ¶å¤±å¹¶å¨ç¼è¾å段å
容æ¶éæ°åºç°ã
<input id="telNo" name="telNo" type="tel" placeholder="123-4567-8901" />
æ§å¶è¾å
¥é¿åº¦
ä¸ä» å¯ä»¥æ§å¶è¾å ¥æ¡çç©çé¿åº¦ï¼è¿å¯ä»¥æ§å¶è¾å ¥ææ¬èªèº«å 许çæå°åæå¤§é¿åº¦ã
è¾å ¥å ç´ çç©çé¿åº¦å¯ä»¥ä½¿ç¨ size
屿§æ¥æ§å¶è¾å
¥æ¡çç©ç大å°ï¼éè¿å®ï¼ä½ å¯ä»¥æå®è¾å
¥æ¡ä¾æ¬¡å¯ä»¥æ¾ç¤ºå¤å°ä¸ªå符ãå¨ä»¥ä¸ç¤ºä¾ä¸ï¼tel
ç¼è¾æ¡å
·æ 20 个å符ç宽度ï¼
<input id="telNo" name="telNo" type="tel" size="20" />
å
ç´ å¼çé¿åº¦
size
åçµè¯å·ç çé¿åº¦éå¶æ¯åå¼çï¼ä½ å¯ä»¥ä½¿ç¨ minlength
屿§ä¸ºè¾å
¥ççµè¯å·ç æå®ä¸ä¸ªæå°é¿åº¦ï¼ä»¥å符为åä½ï¼åæ ·ï¼ä½¿ç¨ maxlength
æ¥è®¾ç½®è¾å
¥çµè¯å·ç çæå¤§é¿åº¦ã
ä¸é¢ç示ä¾å建äºä¸ä¸ª 20 个å符ççµè¯å·ç è¾å ¥æ¡ï¼è¦æ±å 容ä¸å°äº 9 个å符ä¸ä¸è¶ è¿ 14 个å符ã
<input
id="telNo"
name="telNo"
type="tel"
size="20"
minlength="9"
maxlength="14" />
夿³¨ï¼ ä¸è¿°å±æ§ç¡®å®ä¼å½±åéªè¯ââ妿å¼çé¿åº¦å°äº 9 个åç¬¦ï¼æè å¤§äº 14 个ï¼ä¸è¿°ç¤ºä¾çè¾å ¥å°è¢«è§ä¸ºæ æã大夿°æµè§å¨çè³ä¸ä¼è®©ä½ è¾å ¥è¶ è¿æå¤§é¿åº¦çå¼ã
æä¾é»è®¤é项 ä½¿ç¨ value 屿§æä¾ç®åé»è®¤é项ä¸å¾å¸¸ä¸æ ·ï¼ä½ å¯ä»¥éè¿è®¾ç½®å
¶ value
屿§ä¸º tel
è¾å
¥æ¡æä¾é»è®¤å¼ï¼
<input id="telNo" name="telNo" type="tel" value="333-4444-4444" />
æä¾å»ºè®®å¼
ä½ å¯ä»¥æ´è¿ä¸æ¥ï¼æä¾ä¸ä¸ªé»è®¤çµè¯å·ç çå表ï¼è®©ç¨æ·ä»ä¸éæ©ãè¦åå°è¿ä¸ç¹ï¼ä½¿ç¨ list
屿§ãè¿ä¸ä¼å°ç¨æ·éå¶å¨è¿äºé项ä¸ï¼ä½ç¡®å®è½è®©ä»ä»¬æ´å¿«éæ©å¸¸ç¨ççµè¯å·ç ãè¿ä¹ä¸º autocomplete
æä¾æç¤ºãlist
屿§æå®äºä¸ä¸ª <datalist>
å
ç´ ç IDï¼è¯¥å
ç´ åå
å«äºæ¯ä¸ªå»ºè®®å¼çä¸ä¸ª <option>
å
ç´ ï¼æ¯ä¸ª option
ç value
æ¯çµè¯å·ç è¾å
¥æ¡çç¸åºå»ºè®®å¼ã
<label for="telNo">çµè¯å·ç ï¼</label>
<input id="telNo" name="telNo" type="tel" list="defaultTels" />
<datalist id="defaultTels">
<option value="111-1111-1111"></option>
<option value="122-2222-2222"></option>
<option value="333-3333-3333"></option>
<option value="344-4444-4444"></option>
</datalist>
æäº <datalist>
å
ç´ åå
¶ <option>
åå
ç´ ï¼æµè§å¨å°æä¾æå®çå¼ä½ä¸ºçµè¯å·ç çæ½å¨å¼ï¼é常以弹åºå¼æä¸æå¼èåçå½¢å¼åç°ï¼å
¶ä¸å
å«å»ºè®®ãè½ç¶å
·ä½çç¨æ·ä½éªå¯è½å æµè§å¨èå¼ï¼ä½é常æ
åµä¸ï¼ç¹å»ç¼è¾æ¡å°±ä¼åºç°ä¸æå¼ç建议çµè¯å·ç ãç¶åï¼éçç¨æ·çè¾å
¥ï¼åè¡¨è¢«è°æ´ä¸ºåªæ¾ç¤ºè¿æ»¤åçå¹é
å¼ãæ¯ä¸ä¸ªé®å
¥çå符é½ä¼ç¼©å°å表çèå´ï¼ç´å°ç¨æ·ååºéæ©æé®å
¥ä¸ä¸ªèªå®ä¹å¼ã
以ä¸å±å¹æªå¾æ¯å¯è½çå¤è§è¡¨ç°ï¼
éªè¯æ£å¦æä»¬ä¹åè°å°ç飿 ·ï¼ä¸ºçµè¯å·ç æä¾ä¸ç§éç¨ç客æ·ç«¯éªè¯è§£å³æ¹æ¡æ¯ç¸å½å°é¾çãæä»¥ï¼æä»¬è½åäºä»ä¹ï¼è®©æä»¬èèä¸äºé项ã
è¦åï¼ HTML 表åéªè¯ä¸è½æ¿ä»£æå¡å¨ç«¯èæ¬ï¼ä»¥ç¡®ä¿è¾å ¥çæ°æ®å¨è¢«å 许è¿å ¥æ°æ®åºä¹åæ¯æ£ç¡®çæ ¼å¼ãå¯¹äºæäºäººæ¥è¯´ï¼è°æ´ HTML ä»£ç æ¯é常容æçï¼è¿æ ·ä»ä»¬å°±å¯ä»¥ç»è¿éªè¯ï¼æè å®å ¨å é¤å®ãä¹æäººå¯è½å®å ¨ç»è¿ä½ ç HTMLï¼ç´æ¥æäº¤æ°æ®å°ä½ çæå¡å¨ãå¦æä½ çæå¡å¨ç«¯ä»£ç æ æ³éªè¯æ¥æ¶å°çæ°æ®ï¼é£ä¹å½æ ¼å¼ä¸æ£ç¡®çæ°æ®ï¼ææ°æ®å¤ªå¤§ï¼ç±»åé误ççï¼è¾å ¥å°æ°æ®åºæ¶ï¼å¯è½ä¼å¯¼è´ç¾é¾ã
è¦æ±çµè¯å·ç å¿ å¡«ä½ å¯ä»¥å©ç¨ required
屿§ä»¤ç©ºçè¾å
¥æ æï¼å¹¶é»æ¢å
¶æäº¤å°ä½ çæå¡å¨ãä¾å¦ï¼ä½¿ç¨ä»¥ä¸ HTML 代ç ï¼
<form>
<div>
<label for="telNo">è¾å
¥ä¸ä¸ªçµè¯å·ç ï¼å¿
å¡«ï¼ï¼</label>
<input id="telNo" name="telNo" type="tel" required />
<span class="validity"></span>
</div>
<div>
<button>æäº¤</button>
</div>
</form>
æä»¬å å«ä»¥ä¸ CSS 代ç ï¼å°ææè¾å ¥æ¾ç¤ºä¸ºå¯¹å¾ï¼æ æè¾å ¥æ¾ç¤ºéåï¼
div {
margin-bottom: 10px;
position: relative;
}
input[type="number"] {
width: 100px;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
color: #8b0000;
}
input:valid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
color: #009000;
}
以ä¸ä»£ç çè¾åºå¦ä¸å¾æç¤ºï¼
模å¼éªè¯å¦æä½ æ³è¿ä¸æ¥éå¶è¾å
¥çæ°åï¼ä½¿å®ä»¬ä¹å¿
须符åç¹å®ç模å¼ï¼ä½ å¯ä»¥ä½¿ç¨ pattern
屿§ï¼å®ç弿¯æ£å表达å¼ï¼è¾å
¥çå¼å¿
须符åè¿ä¸ªæ£å表达å¼ã
å¨è¿ä¸ªç¤ºä¾ä¸æä»¬å°ä½¿ç¨åæ ·ç CSS 代ç ï¼ä½æ¯ HTML 代ç å°åä¸äºä¿®æ¹ï¼
<form>
<div>
<label for="telNo"> 以 xxx-xxx-xxxx æ ¼å¼è¾å
¥ä¸ä¸ªçµè¯å·ç ï¼ </label>
<input
id="telNo"
name="telNo"
type="tel"
required
pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" />
<span class="validity"></span>
</div>
<div>
<button>æäº¤</button>
</div>
</form>
div {
margin-bottom: 10px;
position: relative;
}
input[type="number"] {
width: 100px;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
color: #8b0000;
}
input:valid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
color: #009000;
}
请注æï¼é¤é䏿¨¡å¼ xxx-xxx-xxxx ç¸å¹é ï¼å¦åè¾å ¥çå¼å°è¢«æ¥åä¸ºæ æï¼ä¾å¦ï¼41-323-421 å°ä¸è¢«æ¥åã800-MDN-ROCKS ä¹ä¸è¢«æ¥åãç¶èï¼865-555-6502 å°è¢«æ¥åãè¿ä¸ªç¹å®çæ¨¡å¼æ¾ç¶åªå¯¹æäºå°åºæç¨ââå¨å®é åºç¨ä¸ï¼ä½ å¯è½éè¦æ ¹æ®ç¨æ·çå°åºæ¥æ¹å使ç¨ç模å¼ã
示ä¾å¨è¿ä¸ªç¤ºä¾ä¸ï¼æä»¬å±ç¤ºäºä¸ä¸ªç®åççé¢ï¼å
¶ä¸æä¸ä¸ª <select>
å
ç´ ï¼è®©ç¨æ·éæ©ä»ä»¬æå¨çå½å®¶ï¼è¿æä¸ç» <input type="tel">
å
ç´ ï¼è®©ä»ä»¬è¾å
¥çµè¯å·ç çæ¯ä¸é¨åï¼æ¾ç¶ä½ åºè¯¥æå¤ä¸ª tel
è¾å
¥ã
æ¯ä¸ªè¾å
¥é½æä¸ä¸ª placeholder
屿§ï¼ä»¥åè§åæ£å¸¸çç¨æ·æ¾ç¤ºä¸ä¸ªå
³äºè¾å
¥å
容çæç¤ºï¼ä¸ä¸ª pattern
æ¥æ§è¡æéé¨åçç¹å®å符æ°ãåä¸ä¸ª aria-label
屿§ï¼ä»¥å
å«ä¸ä¸ªæç¤ºï¼åå±å¹é
读å¨ç¨æ·å®£è¯»è¦è¾å
¥çä¿¡æ¯ã
<form>
<div>
<label for="country">Choose your country:</label>
<select id="country" name="country">
<option>UK</option>
<option selected>US</option>
<option>Germany</option>
</select>
</div>
<div>
<p>è¾å
¥ä½ ççµè¯å·ç ï¼</p>
<span class="areaDiv">
<input
id="areaNo"
name="areaNo"
type="tel"
required
placeholder="Area code"
pattern="[0-9]{3}"
aria-label="Area code" />
<span class="validity"></span>
</span>
<span class="number1Div">
<input
id="number1"
name="number1"
type="tel"
required
placeholder="First part"
pattern="[0-9]{3}"
aria-label="First part of number" />
<span class="validity"></span>
</span>
<span class="number2Div">
<input
id="number2"
name="number2"
type="tel"
required
placeholder="Second part"
pattern="[0-9]{4}"
aria-label="Second part of number" />
<span class="validity"></span>
</span>
</div>
<div>
<button>Submit</button>
</div>
</form>
JavaScript 代ç ç¸å¯¹ç®åââå®å
å«ä¸ä¸ª onchange
äºä»¶å¤çç¨åºï¼å½ <select>
弿¹åæ¶ï¼æ´æ° <input>
å
ç´ ç pattern
ãplaceholder
å aria-label
以éåºé£ä¸ªå½å®¶æå°åºççµè¯å·ç æ ¼å¼ã
const selectElem = document.querySelector("select");
const inputElems = document.querySelectorAll("input");
selectElem.onchange = () => {
for (let i = 0; i < inputElems.length; i++) {
inputElems[i].value = "";
}
if (selectElem.value === "US") {
inputElems[2].parentNode.style.display = "inline";
inputElems[0].placeholder = "Area code";
inputElems[0].pattern = "[0-9]{3}";
inputElems[1].placeholder = "First part";
inputElems[1].pattern = "[0-9]{3}";
inputElems[1].setAttribute("aria-label", "First part of number");
inputElems[2].placeholder = "Second part";
inputElems[2].pattern = "[0-9]{4}";
inputElems[2].setAttribute("aria-label", "Second part of number");
} else if (selectElem.value === "UK") {
inputElems[2].parentNode.style.display = "none";
inputElems[0].placeholder = "Area code";
inputElems[0].pattern = "[0-9]{3,6}";
inputElems[1].placeholder = "Local number";
inputElems[1].pattern = "[0-9]{4,8}";
inputElems[1].setAttribute("aria-label", "Local number");
} else if (selectElem.value === "Germany") {
inputElems[2].parentNode.style.display = "inline";
inputElems[0].placeholder = "Area code";
inputElems[0].pattern = "[0-9]{3,5}";
inputElems[1].placeholder = "First part";
inputElems[1].pattern = "[0-9]{2,4}";
inputElems[1].setAttribute("aria-label", "First part of number");
inputElems[2].placeholder = "Second part";
inputElems[2].pattern = "[0-9]{4}";
inputElems[2].setAttribute("aria-label", "Second part of number");
}
};
示ä¾çæ¾ç¤ºææå¦ä¸æç¤ºï¼
è¿æ¯ä¸ä¸ªæè¶£çæ³æ³ï¼å®æ¾ç¤ºäºå¤çå½é çµè¯å·ç é®é¢çæ½å¨è§£å³æ¹æ¡ãä½ å°ä¸å¾ä¸æ©å¤§è¿ä¸ªèä¾ï¼ä¸ºæ½å¨çæ¯ä¸ªå½å®¶æä¾æ£ç¡®ç模å¼ï¼å·¥ä½éä¼ç¸å½ç¹éï¼ä¸ä»ç¶ä¸å¯è½å ¨é¨ä¿è¯ç¨æ·æè¾å ¥çå·ç 弿¯æ£ç¡®çã
å¼å¾å¨å®¢æ·ç«¯ä¸è¿ä¹éº»ç¦åï¼æ¢ä¸ªæè·¯ï¼å°±è®©ç¨æ·å¨å®¢æ·ç«¯é便è¾å ¥ä»»ä½å®ä»¬æ³è¦çæ ¼å¼ï¼ç¶å让æå¡å¨è¿è¡å¤çï¼çä½ æä¹æ³äºã
div {
margin-bottom: 10px;
position: relative;
}
input[type="number"] {
width: 100px;
}
input + span {
padding-right: 30px;
}
input:invalid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
color: #8b0000;
}
input:valid + span::after {
position: absolute;
content: "â";
padding-left: 5px;
color: #009000;
}
è§è æµè§å¨å
¼å®¹æ§ åè§
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