Javascript 检测输入占位符是否可见

Javascript 检测输入占位符是否可见,javascript,jquery,placeholder,Javascript,Jquery,Placeholder,我试图找到一种方法来检测输入当前是否显示占位符 我知道我们可以测试给定浏览器中是否支持占位符,我会使用占位符,但这不是我在这里要问的 伪类正是我所需要的,但是对它的支持非常低。比一般的占位符支持低很多。所以我在寻找另一种方法 注意:解决方案不能依赖于输入是否已更改或获得值。自动填充输入既没有技术价值,也没有更改。因此,解决方案需要自己真正检测占位符。将required属性添加到输入中,然后使用:invalid选择显示占位符的输入 这不适用于输入类型,如电子邮件或具有模式属性的输入 如果希望js在

我试图找到一种方法来检测输入当前是否显示占位符

我知道我们可以测试给定浏览器中是否支持占位符,我会使用占位符,但这不是我在这里要问的

伪类正是我所需要的,但是对它的支持非常低。比一般的占位符支持低很多。所以我在寻找另一种方法


注意:解决方案不能依赖于输入是否已更改或获得值。自动填充输入既没有技术价值,也没有更改。因此,解决方案需要自己真正检测占位符。

required
属性添加到输入中,然后使用
:invalid
选择显示占位符的输入

这不适用于输入类型,如电子邮件或具有模式属性的输入


如果希望js在所有情况下都能正常工作,那么使用js仍然是最好的选择。

首先,检查元素是否正在使用
占位符属性,然后检查输入值是否为空:

功能占位符激活(选择器){
var el=document.querySelector(选择器);
if(el.getAttribute('placeholder')&&el.value=''){
返回true;
}
返回false;
}
变量a=占位符活动('#test1');//假的
var b=占位符活动('#test2');//假的
var c=占位符活动('#test3');//假的
var d=占位符活动('#test4');//真的
控制台日志(a、b、c、d)

如今,对于大多数浏览器,我们可以使用
:placeholder Showed
伪类来检测是否显示占位符

功能占位符激活(选择器){
return!!document.querySelector(选择器+':显示占位符');
}
常量a=占位符活动('#test1');//假的
常量b=占位符活动('#test2');//假的
常量c=占位符活动('#test3');//假的
常量d=占位符活动('#test4');//真的
控制台日志(a、b、c、d)

感谢您的回复,但所需的方法仅涵盖特定的用例,而许多表单不在其中。我在找一些不那么拘束的东西。