Reputation: 301
I want to apply some styles based on my input conditions. I don't want to use any additional classes and looking for a CSS only solution.
The problem is when I trying to use this selectors
:disabled:valid
:disabled:invalid
it just won't work. Any ideas?
Thank you for your time!
input:disabled + span {
color: gray;
}
input:valid + span, input:disabled:valid + span {
color: green;
}
input:invalid + span, input:disabled:invalid + span {
color: red;
}
fieldset {
padding: 10px;
border: none;
}
fieldset > div {
margin-bottom: 10px;
}
label {
display: block;
}
button:first-child {
margin-left: 10px;
}
<div>
<fieldset>
<div>
<label>First name</label>
<input type="text" name="firstname" value="Stephan" required>
<span>Valid</span>
</div>
<div>
<label>Last name</label>
<input type="text" name="lastname" required>
<span>Invalid</span>
</div>
</fieldset>
</div>
<div>
<button onclick="document.querySelector('fieldset').disabled = true">Send</button>
<button onclick="document.querySelector('fieldset').disabled = false">Cancel</button>
</div>
Upvotes: 1
Views: 1420
Reputation: 2844
Unfortunately, once an input is disabled, the browser doesn't look at valid or invalid anymore. The invalid will rule out the other pseudo classes.
Upvotes: 3