检测输入占位符是否可见
Detect if input placeholder is visible
我正在尝试找到一种方法来检测输入当前是否显示占位符。
我知道我们可以测试我会使用的给定浏览器是否支持占位符,但这不是我在这里要问的。
:placeholder-shown
伪 class 正是我所需要的,但对它的支持很低。远低于对一般占位符的支持。所以我正在寻找替代方法。
注意:解决方案不能依赖于输入是否已更改或获得值。自动填充的输入既没有技术价值,也没有改变。因此,该解决方案需要真正检测到占位符本身。
将 required
属性添加到输入,然后使用 :invalid
到 select 显示占位符的输入。
这不适用于电子邮件或具有模式属性的输入等输入类型。
如果你想让它在所有情况下都能正常工作,使用js仍然是最好的选择。
首先检查元素是否正在使用placeholder
属性,然后检查输入的值是否为空:
function placeholderActive(selector) {
var el = document.querySelector(selector);
if (el.getAttribute('placeholder') && el.value === '') {
return true;
}
return false;
}
var a = placeholderActive('#test1'); // false
var b = placeholderActive('#test2'); // false
var c = placeholderActive('#test3'); // false
var d = placeholderActive('#test4'); // true
console.log(a, b, c, d);
<input id="test1" name="test1" value="123">
<input id="test2" name="test2" placeholder="" value="123">
<input id="test3" name="test3" placeholder="Some Placeholder" value="123">
<input id="test4" name="test4" placeholder="Another placeholder" value="">
如今,对于大多数浏览器,我们可以使用:placeholder-shown
伪class来检测占位符是否显示。
function placeholderActive(selector) {
return !!document.querySelector(selector + ':placeholder-shown');
}
const a = placeholderActive('#test1'); // false
const b = placeholderActive('#test2'); // false
const c = placeholderActive('#test3'); // false
const d = placeholderActive('#test4'); // true
console.log(a, b, c, d);
<input id="test1" name="test1" value="123">
<input id="test2" name="test2" placeholder="" value="123">
<input id="test3" name="test3" placeholder="Some Placeholder" value="123">
<input id="test4" name="test4" placeholder="Another placeholder" value="">
CSS-技巧:https://css-tricks.com/almanac/selectors/p/placeholder-shown/
我正在尝试找到一种方法来检测输入当前是否显示占位符。
我知道我们可以测试我会使用的给定浏览器是否支持占位符,但这不是我在这里要问的。
:placeholder-shown
伪 class 正是我所需要的,但对它的支持很低。远低于对一般占位符的支持。所以我正在寻找替代方法。
注意:解决方案不能依赖于输入是否已更改或获得值。自动填充的输入既没有技术价值,也没有改变。因此,该解决方案需要真正检测到占位符本身。
将 required
属性添加到输入,然后使用 :invalid
到 select 显示占位符的输入。
这不适用于电子邮件或具有模式属性的输入等输入类型。
如果你想让它在所有情况下都能正常工作,使用js仍然是最好的选择。
首先检查元素是否正在使用placeholder
属性,然后检查输入的值是否为空:
function placeholderActive(selector) {
var el = document.querySelector(selector);
if (el.getAttribute('placeholder') && el.value === '') {
return true;
}
return false;
}
var a = placeholderActive('#test1'); // false
var b = placeholderActive('#test2'); // false
var c = placeholderActive('#test3'); // false
var d = placeholderActive('#test4'); // true
console.log(a, b, c, d);
<input id="test1" name="test1" value="123">
<input id="test2" name="test2" placeholder="" value="123">
<input id="test3" name="test3" placeholder="Some Placeholder" value="123">
<input id="test4" name="test4" placeholder="Another placeholder" value="">
如今,对于大多数浏览器,我们可以使用:placeholder-shown
伪class来检测占位符是否显示。
function placeholderActive(selector) {
return !!document.querySelector(selector + ':placeholder-shown');
}
const a = placeholderActive('#test1'); // false
const b = placeholderActive('#test2'); // false
const c = placeholderActive('#test3'); // false
const d = placeholderActive('#test4'); // true
console.log(a, b, c, d);
<input id="test1" name="test1" value="123">
<input id="test2" name="test2" placeholder="" value="123">
<input id="test3" name="test3" placeholder="Some Placeholder" value="123">
<input id="test4" name="test4" placeholder="Another placeholder" value="">
CSS-技巧:https://css-tricks.com/almanac/selectors/p/placeholder-shown/