我最近发现:invalid
伪类会立即应用于required
表单元素,即使在页面加载时。例如,如果你有以下代码:
<style>
input:invalid { background-color: pink; color: white; }
input:valid { background-color: white; color: black; }
</style>
…
<input name="foo" required />
然后您的页面将显示一个空的粉色输入框。内置HTML5验证非常好,但我认为大多数用户不希望在他们有机会输入任何值之前进行表单验证。是否有任何方法可以延迟伪类的应用,直到第一个影响该元素的事件(表单提交、失去焦点、更改或其他适当的事件)?是否可以在不使用JavaScript的情况下实现这一点?
makeDirty
不应该切换脏类,而应该在未来(蓝色,无效,有效)事件上保持它。函数makeDirty(e){ if (!e.target.classList.contains('dirty')) e.target.classList.add('dirty'); } - Abir Stolov