:invalid
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
:invalid æ¯ CSS ä¼ªç±»éæ©å¨ï¼ç¨æ¥éæ©ä»»ä½æªéè¿éªè¯ç <form>ã<fieldset>ã<input> æå
¶ä»è¡¨åå
ç´ ã
å°è¯ä¸ä¸
label {
display: block;
margin-top: 1em;
}
input:invalid {
background-color: ivory;
border: none;
outline: 2px solid red;
border-radius: 5px;
}
<form>
<label for="email">Email Address:</label>
<input id="email" name="email" type="email" value="na@me@example.com" />
<label for="secret">Secret Code: (lower case letters)</label>
<input id="secret" name="secret" type="text" value="test" pattern="[a-z]+" />
<label for="age">Your age: (18+)</label>
<input id="age" name="age" type="number" value="5" min="18" />
<label
><input name="tos" type="checkbox" required checked /> - Do you agree to
ToS?</label
>
</form>
è¯¥ä¼ªç±»éæ©å¨å¯ç¨äºçªåºæ¾ç¤ºç¨æ·çåæ®µé误ã
è¯æ³
:invalid {
/* ... */
}
示ä¾
>使ç¨é¢è²æ è¯å ç´ ä»¥æ¾ç¤ºéªè¯ç»æ
HTML
<form>
<div class="field">
<label for="url_input">è¾å
¥ä¸ä¸ª URLï¼</label>
<input type="url" id="url_input" />
</div>
<div class="field">
<label for="email_input">è¾å
¥ä¸ä¸ªçµåé®ä»¶å°åï¼</label>
<input type="email" id="email_input" required />
</div>
</form>
CSS
label {
display: block;
margin: 1px;
padding: 1px;
}
.field {
margin: 1px;
padding: 1px;
}
input:invalid {
background-color: #ffdddd;
}
form:invalid {
border: 5px solid #ffdddd;
}
input:valid {
background-color: #ddffdd;
}
form:valid {
border: 5px solid #ddffdd;
}
input:required {
border-color: #800000;
border-width: 3px;
}
input:required:invalid {
border-color: #c00000;
}
ç»æ
å±ç¤ºåé¶æ®µç表åé¨å
å¨è¿ä¸ªä¾åä¸ï¼æä»¬ä½¿ç¨ :invalid 以ååç»å
å¼éæ©å¨ï¼~ï¼æ¥åé¶æ®µå°å±ç¤ºä¸ä¸ªè¡¨åï¼ä½¿å¾è¡¨åæååªæ¾ç¤ºç¬¬ä¸ä¸ªå®æç项ç®ï¼å½ç¨æ·å®ææ¯ä¸ä¸ªé¡¹ç®æ¶ï¼è¡¨å伿¾ç¤ºä¸ä¸ä¸ªé¡¹ç®ã彿´ä¸ªè¡¨å宿åï¼ç¨æ·å¯ä»¥æäº¤å®ã
HTML
<form>
<fieldset>
<label for="form-name">å§å</label><br />
<input type="text" name="name" id="form-name" required />
</fieldset>
<fieldset>
<label for="form-email">çµåé®ä»¶</label><br />
<input type="email" name="email" id="form-email" required />
</fieldset>
<fieldset>
<label for="form-message">ä¿¡æ¯</label><br />
<textarea name="message" id="form-message" required></textarea>
</fieldset>
<button type="submit" name="send">æäº¤</button>
</form>
CSS
/* 卿 æçåæ®µéåéèè¯¥åæ®µéï¼ */
fieldset:invalid ~ fieldset {
display: none;
}
/* å¨è¡¨åæ ææ¶ï¼å°æé®åæå¹¶ç¦ç¨å®ï¼ */
form:invalid button {
opacity: 0.3;
pointer-events: none;
}
input,
textarea {
box-sizing: border-box;
width: 100%;
font-family: monospace;
padding: 0.25em 0.5em;
}
button {
width: 100%;
border: thin solid darkgrey;
font-size: 1.25em;
background-color: darkgrey;
color: white;
}
ç»æ
æ éç¢èè
红è²é常ç¨äºè¡¨ç¤ºè¾å ¥æ æãæäºè²ç²æ£è å°æ æ³ç¡®å®è¾å ¥çç¶æï¼é¤éæä¸ä¾èµé¢è²ä¼ è¾¾æä¹çéå æç¤ºå¨ãéå¸¸ä½¿ç¨æè¿°æ§æååï¼æï¼å¾æ ã
注æ
>åéæé®
妿ä¸ç»åéæé®ä¸çä»»ä½ä¸ä¸ªæ¯ reuqireï¼å¹¶ä¸æªéæ©è¯¥ç»ä¸ç任使é®ï¼ååºç¨ :invalid ä¼ªç±»å°æææé®ä¸ï¼åç»çåéæé®å
±äº« name 屿§çç¸åå¼ï¼ã
Gecko é»è®¤è®¾ç½®
é»è®¤æ
åµä¸ï¼Gecko ä¸å¯¹ :invalid 伪类åºç¨æ ·å¼ã使¯ï¼å¯¹äº :invalid çæäºåéæ
åµï¼å®ä¼åºç¨æ ·å¼ï¼ä½¿ç¨ box-shadow 屿§æ¾ç¤ºçº¢è²âåå
âï¼ãæ¤æ¶ï¼åºç¨çæ¯ :user-invalid 伪类ã
è§è
| Specification |
|---|
| HTML > # selector-invalid > |
| Selectors Level 4 > # invalid-pseudo > |
æµè§å¨å ¼å®¹æ§
åè§
- å
¶ä»éªè¯ç¸å
³ç伪类ï¼
:requiredã:optionalã:valid - ç¸å
³ç Mozilla 伪类ï¼
:user-invalidã:-moz-submit-invalid - è¡¨åæ°æ®éªè¯
- ä» JavaScript ä¸è®¿é®æææ§ç¶æ