Sjo*_*erd 126 css input css-selectors
如何将样式应用于空输入框?如果用户在输入字段中键入内容,则不应再应用该样式.这在CSS中可行吗?我试过这个:
input[value=""]
Run Code Online (Sandbox Code Playgroud)
luk*_*mdo 148
如果只有required你可以去的领域input:valid
#foo-thing:valid + .msg { visibility: visible!important; } Run Code Online (Sandbox Code Playgroud)
<input type="text" id="foo-thing" required="required">
<span class="msg" style="visibility: hidden;">Yay not empty</span>Run Code Online (Sandbox Code Playgroud)
或否定使用#foo-thing:invalid(信用@SamGoody)
Ber*_*end 123
在现代浏览器中,您可以使用:placeholder-shown目标空输入(不要混淆::placeholder).
input:placeholder-shown {
border: 1px solid red; /* Red border only if the input is empty */
}
Run Code Online (Sandbox Code Playgroud)
更多信息和浏览器支持:https://css-tricks.com/almanac/selectors/p/placeholder-shown/
Que*_*tin 44
CSS中没有选择器可以做到这一点.属性选择器匹配属性值,而不是计算值.
你必须使用JavaScript.
Sha*_*ggy 18
更新字段的值不会更新DOM中的value属性,这就是为什么你的选择器总是匹配一个字段,即使它实际上不是空的.
而是使用invalid伪类来实现您想要的,如下所示:
input:required {
border: 1px solid green;
}
input:required:invalid {
border: 1px solid red;
}Run Code Online (Sandbox Code Playgroud)
<input required type="text" value="">
<input required type="text" value="Value">Run Code Online (Sandbox Code Playgroud)
Dra*_*ter 15
input[value=""], input:not([value])
适用于:
<input type="text" />
<input type="text" value="" />
Run Code Online (Sandbox Code Playgroud)
但是一旦有人开始打字,风格就不会改变(你需要JS).
My *_*eth 10
如果不需要支持旧版浏览器,可以使用的组合required,valid和invalid.
使用它的好处是valid和invalid伪元素可以很好地与输入字段的类型属性配合使用.例如:
input:invalid, textarea:invalid {
box-shadow: 0 0 5px #d45252;
border-color: #b03535
}
input:valid, textarea:valid {
box-shadow: 0 0 5px #5cd053;
border-color: #28921f;
}Run Code Online (Sandbox Code Playgroud)
<input type="email" name="email" placeholder="john_doe@example.com" required />
<input type="url" name="website" placeholder="http://johndoe.com"/>
<input type="text" name="name" placeholder="John Doe" required/>Run Code Online (Sandbox Code Playgroud)
供参考,JSFiddle:http://jsfiddle.net/0sf6m46j/
这对我有用:
对于 HTML,将required属性添加到 input 元素
<input class="my-input-element" type="text" placeholder="" required />
Run Code Online (Sandbox Code Playgroud)
对于 CSS,使用:invalid选择器定位空输入
input.my-input-element:invalid {
}
Run Code Online (Sandbox Code Playgroud)
笔记:
required来自w3Schools.com:“当存在时,它指定必须在提交表单之前填写输入字段。”我意识到这是一个非常古老的线程,但是从那以后事情发生了一些变化,它确实帮助我找到了解决问题所需的正确组合。所以我想我会分享我所做的。
问题是,如果填充了可选输入,我需要将相同的 css 应用于它,就像我对填充的必需输入一样。css 使用了伪类 :valid ,它在未填充时也将 css 应用于可选输入。
这就是我修复它的方式;
HTML
<input type="text" required="required">
<input type="text" placeholder="">
Run Code Online (Sandbox Code Playgroud)
CSS
input:required:valid {
....
}
input:optional::not(:placeholder-shown){
....
}
Run Code Online (Sandbox Code Playgroud)
将类名添加到输入中,然后对其应用 CSS 规则对我来说很有用:
<input type="text" name="product" class="product" />
<style>
input[value=""].product {
display: none;
}
</style>
Run Code Online (Sandbox Code Playgroud)
$('input#edit-keys-1').blur(function(){
tmpval = $(this).val();
if(tmpval == '') {
$(this).addClass('empty');
$(this).removeClass('not-empty');
} else {
$(this).addClass('not-empty');
$(this).removeClass('empty');
}
});
Run Code Online (Sandbox Code Playgroud)
在jQuery中.我添加了一个类并用css设计.
.empty { background:none; }
Run Code Online (Sandbox Code Playgroud)
小智 5
这个问题可能已经被问过一段时间了,但是当我最近开始寻找客户端表单验证这个主题时,并且随着支持:placeholder-shown 越来越好,我认为以下内容可能会对其他人有所帮助。
通过使用这个 CSS4 伪类的Berend想法,我能够创建一个仅在用户完成填写后触发的表单验证。
以下是 CodePen 上的演示和说明: https: //codepen.io/johanmouchet/pen/PKNxKQ
| 归档时间: |
|
| 查看次数: |
97048 次 |
| 最近记录: |