HTML5必需的输入样式

时间:2011-03-09 16:47:20

标签: html5 css3 validation required

在HTML 5中,我们可以将输入标记为required,然后使用CSS中的[required]伪选择器选择它们。但是我只想在他们尝试提交表单时设置样式而不填写必需的元素。这有选择器吗?弹出的小消息框怎么样?

7 个答案:

答案 0 :(得分:28)

您可以使用:valid和:无效的选择器。像这样的东西

.field:valid {
    border-color:#0f0;
}
.field:invalid {
    border-color:#f00;
}

但是,这仅适用于支持本机验证的浏览器,并且仅适用于有意义的字段。据我所知,现在只表示Chrome(可能是Safari,但尚未检查)。

因此,通过本机验证,我的意思是在chrome中,如果你<input type="email">,字段的值将被验证为电子邮件类型字符串(没有任何其他javascript),因此上面的样式将起作用。但是,如果您要将它们附加到type="text"字段或第二个密码字段(假设与第一个匹配),那么您只能获得绿色,因为一切都是有效的,并且在密码的情况下,无论如何都没有“类型”。

这基本上意味着支持所有浏览器,更重要的是,更广泛的验证,你仍然需要诉诸javascript,在这种情况下,分配.valid / .invalid类应该不是问题。 :)

答案 1 :(得分:12)

我已经使用js在提交时将一个.validated类应用于表单,然后使用该类设置样式:invalid fields.eg:

.validated input:invalid { ... }

这样,只有在提交表单后,字段才会在页面加载时显示为无效。 理想情况下,会在提交时将一个pseodo类应用于表单。

答案 2 :(得分:4)

是的,因为SLaks说没有CSS选择器来做到这一点。我怀疑这将属于CSS的范围,因为CSS需要检查输入的内容。

您最好的选择仍然是在点击按钮时调用javascript验证功能,而不是实际提交表单。然后检查[required]字段以查找适当的内容,并提交表单或突出显示未填写的必填字段。

JQuery有一些很好的插件可以帮到你 http://docs.jquery.com/Plugins/validation

答案 3 :(得分:2)

CSS Selectors 4 working draft中有一个:user-error伪类,它将完成此操作,同时触发输入模糊和表单提交。

与此同时,我个人使用了令人敬畏的webshims polyfill library,其中包含:用户错误,或者您可以使用Toby的回答来解决这个问题。

答案 4 :(得分:2)

input:required {
    /* Style your required field */
    /* Be sure to style it as an individual field rather than just add your desired styles
    for a required field. */
}

尝试使用chrome进行测试。我没有在任何其他浏览器中测试它。

答案 5 :(得分:1)

此解决方案将设置通过属性所需的输入字段,而为空。在keydown上填充必填字段时,浏览器将删除:无效的伪类。最新版本的Firefox会自动应用类似于此风格的内容,但Chrome和IE则不会。

input[required]:invalid { box-shadow: 0 0 3px 1px red }

试一试:http://jsfiddle.net/2Ph2X/

答案 6 :(得分:0)

非常简单,只需在元素处于焦点时添加类,然后在提交期间将焦点放在不正确的元素上,客户端逐个填充和验证我相信它是不使用JavaScript的最佳解决方案

input:required:focus {
   border-color: palegreen;
}
input:invalid:focus {
   border-color: salmon;
}