html - 延迟 HTML5 :invalid pseudo-class until the first event

标签 html validation usability

我最近发现 :invalid 伪类在页面加载后立即应用于 required 表单元素。例如,如果您有以下代码:

<style>
input:invalid { background-color: pink; color: white; }
input:valid { background-color: white; color: black; }
</style>
…
<input name="foo" required />

然后您的页面将加载一个空的粉红色输入元素。将验证内置到 HTML5 中很棒,但我认为大多数用户根本不希望表单在他们有机会输入任何值之前进行验证。有什么方法可以延迟伪类的应用,直到第一个影响该元素的事件(表单提交、模糊、更改,任何合适的)?没有 JavaScript 可以做到这一点吗?

最佳答案

http://www.alistapart.com/articles/forward-thinking-form-validation/

Since we only want to denote that a field is invalid once it has focus, we use the focus pseudo-class to trigger the invalid styling. (Naturally, flagging all required fields as invalid from the start would be a poor design choice.)

按照这个逻辑,你的代码看起来像这样......

<style>
    input:focus:required:invalid {background-color: pink; color: white;}
    input:required:valid {background-color: white; color: black; }
</style>

在这里创建了一个 fiddle :http://jsfiddle.net/tbERP/

正如您所猜测的那样,正如您将从 fiddle 中看到的那样,此技术仅在元素具有焦点时显示验证样式。一旦您将焦点移开,样式就会被丢弃,无论它是否有效。无论如何都不理想。

关于html - 延迟 HTML5 :invalid pseudo-class until the first event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15935889/

相关文章:

javascript - 单击侧面按钮时显示不同的图表

javascript - 用于搜索用户评论 html styler 脚本的术语

Laravel 验证数字与 gte :1 throws exception

javascript - 考虑使用 Javascript 但禁用 CSS 的浏览器——这合理吗?

usability - 是什么让用户/潜在用户望而却步?

iphone - 是否有一个库或框架可以使用漂亮的箭头和手写创建注释?

python - Google map API 标记刷新

c++ - 如果字符串是证书,如何检查 openssl c++,如果是,如果该字符串是根证书

php - WooCommerce:强制执行最小长度电话号码字段

html - CSS/HTML 如何在 html 中保留文本格式