html - 如果输入验证失败,则在没有 js 的情况下更改标签的颜色
问题描述
我有一个带有标签和输入类型=文本的表单。我正在使用 pattern="" 来验证文本,并在验证失败时在文本输入下显示一条消息。我希望能够更改标签的颜色以及文本输入中的文本,但似乎无法实现。这就是我到目前为止所拥有的。我不想使用js。
<div class="form-group address">
<label for="address" class="form-group__names" id="invalid">Address</label>
<input type="text" name="address" pattern="^\d+\s[A-z]+\s[A-z]+,\s+[A-z]+,\s+[A-z]
{2}\s+\d{5}" />
<b></b>
</div>
.form-group input:invalid + b:before {
content: "Form is invalid";
color: red;
}
input[type="text"]:invalid + label#invalid {
color: red;
}
解决方案
CSS有通用的兄弟组合器~和相邻的兄弟组合器+,它们都不能选择前一个兄弟元素。因此你必须改变你的元素的顺序,所以输入是第一位的。这是一种方法:
.form-group input:invalid+b:before {
content: "Form is invalid";
color: red;
}
input[type="text"]:invalid~label {
color: red;
}
.address {
position: relative;
padding-left: 100px;
}
.address label {
position: absolute;
left: 0;
line-height: 30px;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="form-group address">
<input type="text" id="address" name="address" pattern="^\d+\s[A-z]+\s[A-z]+,\s+[A-z]+,\s+[A-z]{2}\s+\d{5}" />
<b></b>
<label for="address" class="form-group__names" id="invalid">Address</label>
</div>
</div>
同样在JSFiddle
推荐阅读
- machine-learning - 使用机器学习自动组合动词变位
- oauth - oAuth 1.0 使用空手道框架进行身份验证
- c++ - 如何从另一个进程中解开全局钩子?
- regex - pyspark - python 控制台和带有正则表达式的 jupyter-notebook 中的不同行为
- sql - 将数组传递给 SQL 以返回相同的数组大小并返回顺序
- c++ - 如何在发布模型中忽略调试模式中使用的 std::array 初始化?
- node.js - 在 hasAndBelongsToMany 关系中的节点中执行初始加载
- onelogin - OneLogin OIDC 授权请求无效
- asp.net-mvc - MVC 模型变量未更新
- git - 工作树中的 diff 文件与远程跟踪分支中的文件