是否有一种方法来检测输入是否有文本在它通过CSS?我尝试过使用:empty伪类,也尝试过使用[value=""],这两种方法都不起作用。我似乎找不到一个单一的解决方案。

我想这一定是可能的,考虑到我们有:checked和:indeterminate的伪类,两者都是类似的东西。

请注意:我这样做是为了“时尚”风格,它不能利用JavaScript。

还要注意,在客户端,在用户无法控制的页面上使用了Stylish。


当前回答

简单的css:

input[value]:not([value=""])

如果输入被填满,这段代码将在页面加载上应用给定的css。

其他回答

在这里。fase是html代码中的一个输入类。

div.fase > input:focus:required:invalid { 
    color: red;
    border-color: red; 
    box-shadow: 0 0 6px red;
}

div.fase input:focus:required:valid,
input:focus:required:placeholder-shown {
    border-color: rgb(22, 172, 22);
    box-shadow: 0 0 8px rgb(28, 150, 28);
}

div.fase input:valid {
    border-color: rgb(47, 148, 49);
}

有效的选择器就可以做到这一点。

<input type="text" class="myText" required="required" />

.myText {
    //default style of input
}
.myText:valid {
    //style when input has text
}

您可以使用:占位符显示的伪类。从技术上讲,占位符是必需的,但您可以使用空格代替。

输入:没有(placeholder-shown) { 边框颜色:绿色; } 输入:placeholder-shown { 边框颜色:红色; } <input placeholder="Text is required" /> <input placeholder=" " value="This one is valid" /> <input placeholder=" " /> .

在HTML部分这样做:

<input type="text" name="Example" placeholder="Example" required/>

为了有效,必需的参数将要求它在输入字段中有文本。

你可以使用上面写的没有必填字段的占位符技巧。

required的问题是,当你写了一些东西,然后删除它——作为HTML5规范的一部分,输入现在总是红色的——然后你就需要一个上面写的CSS来修复/覆盖它。

你可以简单地做w/o要求的事情

<input type="text" placeholder="filter here" id="mytest" />

CSS

#mytest:placeholder-shown {
/* if placeholder is shown - meaning - no value in input */
  border: black 1px solid;
  color: black;
}
#mytest {
  /* placeholder isn't shown - we have a value in input */
  border: red 1px solid;
  color: red;
}

代码笔:https://codepen.io/arlevi/pen/LBgXjZ