css - 使用 required 属性在 HTML5 输入字段上设置提示样式

标签 css forms html input required

是否可以在使用 required 属性时设置出现在 HTML5 输入字段上的提示样式。如果您不确定我在说什么,请单击此表单上的“提交”而不填写任何内容。您应该会弹出一个提示。

http://24ways.org/examples/have-a-field-day-with-html5-forms/24ways-form.html

我检查了 CSS 源代码,但没有看到任何关于提示的内容。

我发现以重置方式设置 div 元素的样式会影响它的显示方式。但我不知道如何专门针对它。

请注意:我指的不是占位符。

干杯, 托马斯。

最佳答案

之所以可以使用 div 选择器设置错误气泡的样式是 Chrome 11/12 中的一个错误,应该是 fixed in newer version秒。有一些伪类可以在 Chrome 12(以及 Safari6 中的 maybee)中设置错误气泡的样式(::-webkit-validation-bubble 等)。您可以在 following document 中找到完整的 HTML 结构,包括伪元素选择器和一些样式示例。 .

请注意,这是对 HTML5 表单约束验证和非标准的 webkit 扩展。如果您想在所有支持 HTML5 验证的浏览器中使用某种方式来设置错误消息的样式,则必须使用 JavaScript。

这样做的关键原则是,您必须向无效事件添加一个处理程序(注意:无效事件不会冒泡),然后阻止默认交互。这将消除浏览器的 native 错误气泡,并且您能够在所有 HTML5 浏览器中实现自定义样式的 UI。

//Note: that we use true for useCapture, because invalid does not bubble
document.addEventListener('invalid', function(e){
    //prevent the browser from showing his error bubble
    e.preventDefault();
    //now you can implement your own validation UI (showError is a Custom method which has to be implemented by you
    showError(e.target, $.prop(e.target, 'validationMessage');
}, true);

上面的代码将为当前表单中的所有无效元素调用 showError。如果您只想对第一个无效元素执行此操作,您可以执行以下操作:

document.addEventListener('invalid', (function(){
    var isFirst = true;
    return function(e){
        //prevent the browser from showing his error bubble
        e.preventDefault();
        //now you can implement your own validation UI
        if(isFirst){
            showError(e.target, $.prop(e.target, 'validationMessage');
            //set isFirst to false
            isFirst = false;
            //reset isFirst to true, so user can try to submit invalid forms multiple times
            setTimeout(function(){
                isFirst = true;
            }, 9);
        }
    };
})(), true);

如果您的站点使用 jQuery,我建议您使用 webshims lib . webshims lib 在所有浏览器(包括 IE6)中实现了 HTML5 约束验证,并提供了一个简单的扩展来生成简单的自定义样式验证消息。 JS 代码如下所示:

$(document).bind('firstinvalid', function(e){
    $.webshims.validityAlert.showFor( e.target ); 
    //prevent browser from showing native validation message 
    return false; 
});

$.webshims.validityAlert.showFor 生成的 HTML 结构如下所示:

<span class="validity-alert" role="alert"> 
    <span class="va-arrow"><span class="va-arrow-box"></span></span> 
    <span class="va-box">Error message of the current field</span> 
</span>

关于css - 使用 required 属性在 HTML5 输入字段上设置提示样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660177/

相关文章:

html - CSS 围绕对象中心旋转 SVG 重复 <use> 元素

html - Bootstrap 导航栏中的文本后跟按钮

css - 对CSS感到困惑,隐藏了iframe

css - 使用浏览器调整 CSS 形状元素的大小

jquery克隆表单元素并将其插入表单中

javascript - 如何在 AngularJS 中显示数组表单字段的验证错误?

php - 在网页上格式化打印请求?

html - 如何仅输出带值的下拉菜单(并给它们命名)- Contact Form 7

html - 使用 Flexbox 对齐高度

php - 通过 HTML 表单和 PHP 对表格进行排序?