Baseline Widely available
search
ç±»åç <input>
æ¯ä¸ä¸ºç¨æ·è¾å
¥æ¥è¯¢ææ¬è设计çåæ®µãåè½ä¸ä¸ text
è¾å
¥ç¸åï¼ä½æ¯æ ¹æ®ç¨æ·ä»£çä¸åï¼å¯è½ä¼æä¸åçæ ·å¼è¡¨ç°ã
<label for="site-search">Search the site:</label>
<input type="search" id="site-search" name="q" />
<button>Search</button>
label {
display: block;
font:
1rem "Fira Sans",
sans-serif;
}
input,
label {
margin: 0.4rem 0;
}
å¼
value
屿§å
å«ä¸ä¸ªä»£è¡¨æç´¢å段ä¸å«æå¼çå符串ãä½ å¯ä»¥ä½¿ç¨ JavaScript ç HTMLInputElement.value
屿§è·å该å¼ã
searchTerms = mySearch.value;
å¦ææ²¡æé对该 input çéªè¯çº¦æï¼è¯·åè§éªè¯æ¹å¼ï¼ï¼è¯¥å¼å¯ä»¥æ¯ä»»ä½ææ¬å符串æç©ºå符串ï¼""
ï¼ã
é¤äºå¯å¨ææ <input>
ä¸åºç¨ç屿§ï¼æ 论å
¶ç±»åï¼ä¹å¤ï¼æç´¢å段è¾å
¥è¿æ¯æä»¥ä¸å±æ§ã
list 屿§æå®äºä¸ä¸ª <datalist>
å
ç´ ç id
ï¼ç¨æ¥æä¾è¾å
¥å»ºè®®ã<datalist>
æä¾äºä¸ä¸ªé¢å®ä¹çå¼å表ï¼åç¨æ·å»ºè®®è¿ä¸ªè¾å
¥ãå表ä¸ä»»ä½ä¸ type
ä¸å
¼å®¹çå¼é½ä¸å
æ¬å¨å»ºè®®é项ä¸ãææä¾ç弿¯å»ºè®®ï¼ä¸æ¯è¦æ±ï¼ç¨æ·å¯ä»¥ä»è¿ä¸ªé¢å®ä¹çå表ä¸éæ©ï¼æè
æä¾ä¸åçå¼ã
ç¨æ·å¯ä»¥å¨æç´¢å段ä¸è¾å
¥çæå¤§å符æ°ï¼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
屿§æ¥æ´æ¹ã
夿³¨ï¼ å 为åªè¯»å段ä¸è½æå¼ï¼æä»¥ required
对æå®äº readonly
屿§çè¾å
¥æ²¡æä»»ä½å½±åã
size
屿§æ¯ä¸ä¸ªæ°åå¼ï¼æç¤ºè¾å
¥åæ®µåºæå¤å°ä¸ªå符宽ã该å¼å¿
é¡»æ¯ä¸ä¸ªå¤§äºé¶çæ°åï¼é»è®¤å¼æ¯ 20ãç±äºå符宽度åä¸ç¸åï¼è¿å¯è½æ¯ä¹å¯è½ä¸æ¯ç²¾ç¡®çï¼ä¸åºä¾èµäºæ¤ï¼ç»æè¾å
¥å¯è½æ¯æå®çåç¬¦æ°æ´çªææ´å®½ï¼è¿åå³äºå符ååä½ï¼æ£å¨ä½¿ç¨ç font
设置ï¼ã
è¿å¹¶ä¸éå¶ç¨æ·å¯ä»¥å¨è¯¥å段ä¸è¾å
¥å¤å°ä¸ªå符ï¼ä»
è½æå®ä¸æ¬¡å¯ä»¥çå°å¤å°ä¸ªãè¦è®¾ç½®è¾å
¥æ°æ®é¿åº¦çä¸éï¼è¯·ä½¿ç¨ maxlength
屿§ã
spellcheck
æ¯ä¸ä¸ªå
¨å±å±æ§ï¼ç¨äºæç¤ºæ¯å¦å¯ç¨å
ç´ çæ¼åæ£æ¥ãå®å¯ä»¥ç¨äºä»»ä½å¯ç¼è¾çå
容ï¼ä½æ¯è¿éæä»¬èèå¨ <input>
å
ç´ ä¸ä½¿ç¨ spellcheck
çç»èã spellcheck
çå
许å¼ä¸ºï¼
false
ç¦ç¨æ¤å ç´ çæ¼åæ£æ¥ã
true
对æ¤å ç´ å¯ç¨æ¼åæ£æ¥ã
""
ï¼ç©ºåç¬¦ä¸²ï¼æç©ºå¼
éµå¾ªå
ç´ çé»è®¤è¡ä¸ºè¿è¡æ¼åæ£æ¥ãè¿å¯è½åºäºç¶å
ç´ spellcheck
设置æå
¶ä»å ç´ ã
妿è¾å ¥å段没æè®¾ç½® readonly 屿§ä¸æªç¦ç¨ï¼åå¯ä»¥å¯ç¨æ¼åæ£æ¥ã
å¦æç¨æ·ä»£ççé¦é项è¦çäºè®¾ç½®ï¼åéè¿è¯»å spellcheck
è¿åçå¼å¯è½æ æ³åæ æ§ä»¶ä¸æ¼åæ£æ¥çå®é
ç¶æã
以ä¸éæ å屿§å¨æäºæµè§å¨ä¸å¯¹æç´¢è¾å ¥å段ä¹å¯ç¨ãä¸è¬æ¥è¯´ï¼é¤éä¸ä¸å¾å·²ï¼å¦åä½ åºè¯¥é¿å 使ç¨å®ä»¬ã
autocorrectSafari æ©å±ï¼autocorrect
屿§æ¯ä¸ä¸ªå符串ï¼å®æç¤ºå¨ç¨æ·ç¼è¾æ¤åæ®µæ¶æ¯å¦æ¿æ´»èªå¨æ´æ£ãå
许çå¼ä¸ºï¼
on
å¯ç¨æ¼åé误çèªå¨æ´æ£ï¼ä»¥åé ç½®ææ¬æ¿æ¢ï¼å¦æå·²é ç½®ï¼çå¤çã
off
ç¦ç¨èªå¨æ´æ£åææ¬æ¿æ¢ã
å¸å°å¼å±æ§ incremental
æ¯ WebKit å Blink çæ©å±ï¼å æ¤è¢« SafariãOperaãChrome çæ¯æï¼ã妿å¶å®äºå®ï¼å®ä¼åè¯ç¨æ·ä»£çå°è¾å
¥ä½ä¸ºå®æ¶æç´¢è¿è¡å¤çãå½ç¨æ·ç¼è¾å段ç弿¶ï¼ç¨æ·ä»£çå° search
äºä»¶åéå°ä»£è¡¨æç´¢æ¡ç HTMLInputElement
对象ãè¿å
è®¸ä½ ç代ç å¨ç¨æ·ç¼è¾æç´¢æ¶å®æ¶æ´æ°æç´¢ç»æã
å¦ææ²¡ææå® incremental
ï¼åä»
å½ç¨æ·æ¾å¼å¯å¨æç´¢æ¶ï¼ä¾å¦ï¼å¨ç¼è¾åæ®µæ¶æ Enter æ Return ï¼æåé search
äºä»¶ã
search
äºä»¶åéçéå¶ï¼å æ¤åéäºä»¶çé¢çä¸ä¼è¶
è¿å®ç°å®ä¹çé´éã
Mozilla æ©å±ï¼å®æä¾äºä¸ä¸ªæç¤ºï¼æç¤ºç¨æ·å¨ç¼è¾åæ®µæ¶æ Enter æ Return é®å°éåä½ç§æä½ã
æ¤å±æ§å·²ç»åºå¼ï¼è¯·ä½¿ç¨å
¨å±å±æ§ enterkeyhint
ä½ä¸ºæ¿ä»£ã
results
屿§æ¯ä¸ä¸ªæ°åå¼ï¼ä»
å Safari æ¯æï¼ï¼å¯è®©ä½ è¦çè¦å¨ <input>
å
ç´ åçæä¾çå
åæç´¢æ¥è¯¢ç䏿èå䏿æ¾ç¤ºçæå¤§æ¡ç®æ°ã
该å¼å¿ é¡»æ¯éè´åè¿å¶æ°åãå¦ææªæä¾æç»åºäºæ æå¼ï¼åä½¿ç¨æµè§å¨çé»è®¤æå¤§æ¡ç®æ°ã
ä½¿ç¨æç´¢è¾å ¥search
ç±»åç <input>
å
ç´ ä¸ text
ç±»åçå
ç´ é常ç¸ä¼¼ï¼ä¸åä¹å¤å¨äºå®ä»¬ä¸é¨ç¨äºå¤çæç´¢æ¡ç®ãå®ä»¬çè¡ä¸ºåºæ¬ç¸åï¼ä½æ¯ç¨æ·ä»£çå¯ä»¥éæ©ä¸é»è®¤æ ·å¼ä¸åçæ ·å¼ï¼å½ç¶ï¼ç«ç¹å¯ä»¥ä½¿ç¨æ ·å¼è¡¨åå
¶åºç¨èªå®ä¹æ ·å¼ï¼ã
<form>
<div>
<input type="search" id="mySearch" name="q" />
<button>æç´¢</button>
</div>
</form>
å¦ä¸ï¼
q
æ¯æç´¢è¾å
¥ä¸æå¸¸ç¨ç name
å¼ï¼å°½ç®¡ä¸æ¯å¼ºå¶æ§çãæäº¤åï¼åéå°æå¡å¨çé®å¼å¯¹æ°æ®å°ä¸º q=searchterm
ã
夿³¨ï¼ ä¸å®è¦è®°ä½ä¸ºä½ ç input 设置 name
ï¼å¦åä¸ä¼æäº¤ä»»ä½å
容ã
主è¦çåºæ¬åºå«å¨äºæµè§å¨å¤çå®ä»¬çæ¹å¼ãé¦å è¦æ³¨æçæ¯ï¼æäºæµè§å¨æ¾ç¤ºä¸ä¸ªåå徿 ï¼å¦æéè¦ï¼å¯ä»¥åå»è¯¥åå徿 以ç«å³å é¤æç´¢è¯ãå¨ Chrome ä¸å½æä¸ escape 鮿¶ä¹ä¼è§¦åè¿ä¸ªå¨ä½ã以ä¸å±å¹æªå¾æ¥èª Chromeï¼
æ¤å¤ï¼ç°ä»£æµè§å¨è¿å¾åäºèªå¨åå¨å åå¨å个åä¸è¾å ¥çæç´¢è¯ï¼å¨è¯¥åçæç´¢è¾å ¥ä¸æ§è¡åç»æç´¢æ¶ï¼è¿äºæç´¢è¯ä¼ä½ä¸ºèªå¨å®æé项åºç°ãè¿æå©äºéçæ¶é´çæµéå¾åäºå¨ç¸åæç¸ä¼¼æç´¢æ¥è¯¢ä¸è¿è¡æç´¢çç¨æ·ãæ¤å±å¹æªå¾æ¥èª Firefoxï¼
ç°å¨ï¼è®©æä»¬ççå¯ä»¥åºç¨äºæç´¢è¡¨åçä¸äºæç¨çæå·§ã
设置å ä½ç¬¦å¯ä»¥å¨æç´¢è¾å
¥ä¸æä¾ä¸ä¸ªæç¨çå ä½ç¬¦ï¼ä½¿ç¨ placeholder
屿§æ¥æç¤ºè¦åä»ä¹ãçä¸é¢ç示ä¾ï¼
<form>
<div>
<input type="search" id="mySearch" name="q" placeholder="ç«å
æç´¢..." />
<button>æç´¢</button>
</div>
</form>
å¯ä»¥å¨ä¸é¢çå°å ä½ç¬¦çåç°æ¹å¼ï¼
æç´¢è¡¨åæ ç¾åæ éç¢æç´¢è¡¨åçä¸ä¸ªé®é¢æ¯å®ä»¬çæ éç¢æ§ã常è§ç设计æ¯ä¾æ¯ä¸ä¸ºæç´¢å段æä¾æ ç¾ï¼å°½ç®¡å¯è½ä¼ææ¾å¤§éæç±»ä¼¼å¾æ ï¼ï¼å 为ç±äºæ¾ç½®ä½ç½®çåå ï¼æç´¢è¡¨åçç®çé常对äºè§åæ£å¸¸çç¨æ·èè¨ç¸å½ææ¾ï¼è¿ä¸ªä¾åå±ç¤ºäºä¸ä¸ªå ¸åçæ¨¡å¼ï¼ã
使¯ï¼è¿å¯è½ä¼ä½¿å±å¹é 读å¨ç¨æ·æå°å°æï¼å 为å®ä»¬ä¸ä¼å¯¹æç´¢è¾å ¥å 容æä»»ä½å£å¤´æç¤ºãè§£å³æ¤é®é¢èä¸ä¼å½±åä½ çè§è§è®¾è®¡çä¸ç§æ¹æ³æ¯ä½¿ç¨ WAI-ARIA åè½ï¼
<form>
å
ç´ ä¸ï¼ search
å¼ç role
屿§åå±å¹é
读å¨ç¨æ·å£°æè¯¥è¡¨åæ¯æç´¢è¡¨åã<input>
æ¬èº«ä½¿ç¨ aria-label
屿§ãè¿åºè¯¥æ¯ä¸ä¸ªæè¿°æ§çææ¬æ ç¾ï¼å±å¹é
读å¨ä¼è¯»åºè¯¥æ ç¾ï¼å®ç¨ä½ <label>
çéå¯è§çæé¡¹ã让æä»¬çä¸ä¸ªä¾åï¼
<form role="search">
<div>
<input
type="search"
id="mySearch"
name="q"
placeholder="ç«å
æç´¢..."
aria-label="å¨å
¨ç«å
å®¹ä¸æç´¢" />
<button>æç´¢</button>
</div>
</form>
ä½ å¯ä»¥å¨ä¸é¢çå°å®çåç°æ¹å¼ï¼
ä¸ä¸ä¸ä¸ªç¤ºä¾æ²¡æè§è§ä¸çåºå«ï¼ä½æ¯å±å¹é 读å¨ç¨æ·å¯ä»¥è·å¾æ´å¤å¯ç¨ä¿¡æ¯ã
夿³¨ï¼ æå ³æ¤ç±»è¾ å©åè½çæ´å¤ä¿¡æ¯ï¼è¯·åè§è·¯ç/å°æ ã
è¾å ¥æ¡å ç´ ç©ç大å°å¯ä»¥ä½¿ç¨ size
屿§æ¥æ§å¶è¾å
¥æ¡ç尺寸ã使ç¨å®ï¼å¯ä»¥æå®è¾å
¥æ¡ä¸æ¬¡å¯ä»¥æ¾ç¤ºçå符æ°ãä¾å¦ï¼å¨æ¤ç¤ºä¾ä¸ï¼æç´¢æ¡ä¸º 30 个å符宽ï¼
<form>
<div>
<input
type="search"
id="mySearch"
name="q"
placeholder="ç«å
æç´¢..."
size="30" />
<button>æç´¢</button>
</div>
</form>
ç»ææ¯è¿ä¸ªæ´å®½çè¾å ¥æ¡ï¼
éªè¯æ¹å¼<input>
å
ç´ ç search
ç±»åå
·æä¸å¸¸è§ææ¬ text
è¾å
¥ç¸åçéªè¯åè½ãé常ï¼ä¸å¤ªå¯è½å¸æå¯¹æç´¢æ¡ä½¿ç¨éªè¯åè½ãå¨è®¸å¤æ
åµä¸ï¼åºè¯¥å
è®¸ç¨æ·æç´¢ä»»ä½å
容ï¼ä½æ¯æå ç§æ
åµéè¦èèï¼ä¾å¦æç´¢å·²ç¥æ ¼å¼çæ°æ®ã
夿³¨ï¼ HTML 表åéªè¯ä¸è½æ¿ä»£æå¡å¨èæ¬ï¼ä»¥ç¡®ä¿è¾å ¥çæ°æ®æ ¼å¼æ£ç¡®ãå¯¹äºæäººæ¥è¯´ï¼å¯¹ HTML è¿è¡è°æ´ä»¥ä½¿å ¶ç»è¿éªè¯æå®å ¨å é¤éªè¯å¤ªå®¹æäºãæäººä¹å¯ä»¥å®å ¨ç»å¼ä½ ç HTML å¹¶å°æ°æ®ç´æ¥æäº¤å°ä½ çæå¡å¨ã妿æå¡å¨ç«¯ä»£ç æ æ³éªè¯æ¥æ¶å°çæ°æ®ï¼åå½å°æ ¼å¼ä¸æ£ç¡®çæ°æ®ï¼æå¤ªå¤§ï¼ç±»åéè¯¯çæ°æ®ççï¼è¾å ¥æ°æ®åºæ¶ï¼ç¾é¾å¯è½ä¼åçã
æ ·å¼æ³¨æäºé¡¹æä¸äºæç¨ç伪类å¯ç¨äºè®¾ç½®ææ/æ æè¡¨åå
ç´ çæ ·å¼ï¼:valid
å :invalid
ã卿¬èä¸ï¼æä»¬å°ä½¿ç¨ä»¥ä¸ CSSï¼å®å°å¨å
嫿æå¼çè¾å
¥æè¾¹æ¾ç½®ä¸ä¸ªå¤éæ è®°ï¼å¾å·ï¼ï¼å¹¶å¨å
嫿 æå¼çè¾å
¥æè¾¹æ¾ç½®ä¸ä¸ªåå·ã
input:invalid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
input:valid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
该æå·§è¿éè¦å° <span>
å
ç´ æ¾ç½®å¨ form å
ç´ ä¹åï¼è¯¥ form å
ç´ å
å½å¾æ çææè
ãè¿æ¯å¿
è¦çï¼å 为æäºæµè§å¨ä¸çæäºè¾å
¥ç±»åä¸è½å¾å¥½å°æ¾ç¤ºç´æ¥ä½äºå
¶åç徿 ã
ä½ å¯ä»¥ä½¿ç¨ required
屿§ä»¤è¾å
¥ä¸ä¸ªå¼æä¸ºå
许æäº¤è¡¨ååçå¿
è¦æ¡ä»¶ï¼
<form>
<div>
<input
type="search"
id="mySearch"
name="q"
placeholder="ç«å
æç´¢..."
required />
<button>æç´¢</button>
<span class="validity"></span>
</div>
</form>
input {
margin-right: 10px;
}
input:invalid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
input:valid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
å¦ä¸æç¤ºï¼
å¦å¤ï¼å¦æå°è¯å¨æªè¾å ¥æç´¢è¯çæ åµä¸æäº¤è¡¨åï¼æµè§å¨å°æ¾ç¤ºä¸æ¡æ¶æ¯ã以ä¸ç¤ºä¾æ¥èª Firefoxï¼
å½å°è¯ä½¿ç¨è¾å ¥ä¸å å«çä¸åç±»åçæ ææ°æ®æäº¤è¡¨åæ¶ï¼å°æ¾ç¤ºä¸åçæ¶æ¯ï¼è¯·åé 以ä¸ç¤ºä¾ã
è¾å ¥å¼é¿åº¦ä½ å¯ä»¥ä½¿ç¨ minlength
屿§ä¸ºè¾å
¥ç弿宿å°é¿åº¦ï¼ä»¥å符为åä½ï¼ï¼åæ ·ï¼ä½¿ç¨ maxlength
设置è¾å
¥å¼çæå¤§é¿åº¦ã
ä¸é¢ç示ä¾è¦æ±è¾å ¥çå¼çé¿åº¦ä¸º 4â8 个å符ã
<form>
<div>
<label for="mySearch">æ¥æ¾ç¨æ·</label>
<input
type="search"
id="mySearch"
name="q"
placeholder="ç¨æ· ID çé¿åº¦ä¸º 4-8 个å符"
required
size="30"
minlength="4"
maxlength="8" />
<button>æ¥æ¾</button>
<span class="validity"></span>
</div>
</form>
input {
margin-right: 10px;
}
input:invalid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
input:valid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
å¦ä¸æç¤ºï¼
妿å°è¯æäº¤å°äº 4 个å符ç表åï¼å伿¶å°ç¸åºçéè¯¯æ¶æ¯ï¼ä¸åçæµè§å¨ä¼ææä¸åï¼ã妿å°è¯è¾å ¥è¶ è¿ 8 个åç¬¦ï¼æµè§å¨å°ä¸å è®¸ä½ è¿æ ·åã
æå®æ¨¡å¼ä½ å¯ä»¥ä½¿ç¨ pattern
屿§æå®ä¸ä¸ªæ£å表达å¼ï¼è¾å
¥å¼å¿
é¡»éµå¾ªè¯¥æ£åè¡¨è¾¾å¼æè½è¢«è§ä¸ºææï¼è¯·åç
§ä½¿ç¨æ£å表达å¼è¿è¡éªè¯ï¼ã
让æä»¬çä¸ä¸ªä¾åãå设æä»¬æ³æä¾ä¸ä¸ªäº§å ID æç´¢è¡¨æ ¼ï¼è¿äº ID 齿¯ç±ä¸¤ä¸ªåæ¯åå个æ°åç»æç代ç ã以ä¸ç¤ºä¾å¯¹æ¤è¿è¡äºä»ç»ï¼
<form>
<div>
<label for="mySearch">æ ¹æ® ID æ¥æ¾äº§åï¼</label>
<input
type="search"
id="mySearch"
name="q"
placeholder="ä¸¤ä¸ªåæ¯æ¥å使°å"
required
size="30"
pattern="[A-z]{2}[0-9]{4}" />
<button>æ¥æ¾</button>
<span class="validity"></span>
</div>
</form>
input {
margin-right: 10px;
}
input:invalid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
input:valid ~ span::after {
content: "â";
padding-left: 5px;
position: absolute;
}
å¦ä¸æç¤ºï¼
ä¾åå¯ä»¥å¨æä»¬çç½ç« website-aria-roles 示ä¾ä¸çå°ä¸ä¸ªå¨ä¸ä¸æä¸ä½¿ç¨æç´¢è¡¨åçä¸ä¸ªå¥½ä¾åï¼è¯è¯å¨çº¿è¿è¡å®ï¼ã
è§è æµè§å¨å ¼å®¹æ§ åè§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