Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何为DIV创建一个类似于textfield的“占位符”?_Html_Placeholder - Fatal编程技术网

Html 如何为DIV创建一个类似于textfield的“占位符”?

Html 如何为DIV创建一个类似于textfield的“占位符”?,html,placeholder,Html,Placeholder,Div没有占位符属性 我想在DIV中显示,当用户将DIV中的整个文本退格,或者在DIV中没有文本时,我该怎么做?在HTML中 这是一个纯CSS的解决方案:- 在这里,我们基本上选择所有空的和模糊的内容。然后,我们在CSS选择editable div之前创建一个伪元素,并修复占位符文本,该文本将数据ph属性指定为其内容。 如果您的目标是老式的CSS2浏览器,请将所有出现的数据更改为标题 更正…….IE版本8及更早版本不支持:空选择器。您可以尝试此选项 html: 我在其他答案中发现,当使用:not

Div没有占位符属性

我想在DIV中显示,当用户将DIV中的整个文本退格,或者在DIV中没有文本时,我该怎么做?

在HTML中


这是一个纯CSS的解决方案:-

在这里,我们基本上选择所有空的和模糊的内容。然后,我们在CSS选择editable div之前创建一个伪元素,并修复占位符文本,该文本将数据ph属性指定为其内容。 如果您的目标是老式的CSS2浏览器,请将所有出现的数据更改为标题 更正…….IE版本8及更早版本不支持:空选择器。

您可以尝试此选项

html:


我在其他答案中发现,当使用:not:focus伪类时,我必须再次单击以获得闪烁的光标并能够键入。如果单击占位符以外的区域,则不会出现此类问题

我的解决方法只是删除:而不是:集中精力。即使通过这种方式,在我单击可编辑的div后占位符仍然存在,但无论我在div中单击什么位置,我都可以键入,并且在键入内容后占位符立即消失

顺便说一句,我检查了YouTube的comment div实现,似乎它们在做相同的事情,例如contenteditable root.yt格式的字符串[aria label].yt格式的字符串:空:before

.editableDiv1, .editableDiv2{ 边框底部:1px纯色灰色; 大纲:无; 边缘顶部:20px; } .editableDiv1[contentEditable=true]:空:非:焦点:之前{ 内容:属性占位符 } .editableDiv2[contentEditable=true]:空:之前{ 内容:属性占位符 }
你能解释一下用户如何使用“backspace a div”吗?对不起,我的错,忘记编码了。在这种情况下,JavaScript将是你的朋友!你能给我举个例子吗?Thans,我从没想过你能用纯css做这样的smth。令人惊叹的非建设性评论:这太美了!干得好!如何在元素聚焦时保持占位符?如果没有not:focus选择器,插入符号将消失或出现在错误的位置。@boh,若要保留占位符(即使在元素聚焦时),请执行以下操作:[contentEditable=true]:空:在{content:attrdata ph}之前如果开始和结束div标签之间有任何字符或空格,这将不起作用。这与第一个答案有什么不同?
<div id="editable" contenteditable="true">
    <p>Please your enter your Name</p>
</div>
jQuery.fn.selectText = function(){
    var doc = document;
    var element = this[0];
    console.log(this, element);
    if (doc.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();        
        var range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};

$("#editable").click(function() {
    $("#editable").selectText();
});
<div contentEditable=true data-ph="My Placeholder String"></div>
<style>
    [contentEditable=true]:empty:not(:focus):before{
        content:attr(data-ph)
    }
</style>
<div contentEditable=true data-text="Enter name here"></div>
[contentEditable=true]:empty:not(:focus):before{
content:attr(data-text) }