contenteditable型的编辑框,实现placeholder的方式有两种

第一种,Css的实现方式:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.content{
width:380px;
height:50px;
border:1px solid #e1e1e1;
-webkit-user-modify:read-write-plaintext-only;
}
.text:empty:before{content: attr(placeholder);color:#bbb;}
.text:focus{content:none;} </style>
</head>
<body>
<div class="content text" contenteditable="true" placeholder="你想说什么"></div>
</body>
</html>

但是,这种方式存在一个漏洞或问题:如果在编辑框里直接回车,然后再删除,就不会再出现placeholder里的提示内容了、经过分析,发现回车的时候会在

<div class="content text" contenteditable="true" placeholder="你想说什么"></div>添加内容。

如果加了 -webkit-user-modify:read-write-plaintext-only;则增加两个<br/>标签

否则加了两个<div><br/></div>标签。

当增加的是两个<br/>标签,删除只能删除一个标签,余下一个标签,导致empty判断为false。

当增加的是两个<div><br/></div>标签,多按一次删除还是可以出现提示文字,但是用户体验就不佳了。

这里确实很疑惑。毕竟我只敲了一次回车键,为啥会出现两个标签。只有第一次回车键才会出现该情况。往后就正常了、

所以,最终采用了第二种方式。去判断了多余的未删掉的一个标签。

第二种,Js的实现方式:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.content{
width:380px;
height:50px;
border:1px solid #e1e1e1;
-webkit-user-modify:read-write-plaintext-only;
}
.text::after {
content: attr(placeholder);
position: absolute;
top: 10px;
color: #a9a9a9;
}
</style>
</head>
<body>
<div class="content text" contenteditable="true" placeholder="你想说什么"></div>
<script src="js/jquery-2.1.4.min.js"></script>
<script> $('.placeholder').on('input', function(){ var htm = this.innerHTML;
if (htm.length!= 0 && htm!='<br>') {
$(this).removeClass('text');
} else {
$(this).addClass('text');
}
}); </script> </body>
</html>

这方面资料很少,所以我也不是很明白是为啥。暂且先这样解决吧。

div contenteditable placeholder的更多相关文章

  1. div contenteditable 代替Textarea,做成Vue属性动态绑定

    前言 一般都是用Textarea 文本来编辑,但发现可以用 div contenteditable = “true”,这个属性来搞定 <div contenteditable=true plac ...

  2. IOS中div contenteditable=true无法输入

    在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是无法输入.加一个样式-webkit-user-sele ...

  3. js之向div contenteditable光标位置添加字符

    js之向div contenteditable光标位置添加字符  原理: 在HTML里面,光标是一个对象,光标对象是只有当你选中某个元素的时候才会出现的. 当我们去点击一个输入框的时候,实际上它会产生 ...

  4. 让div支持placeholder属性/模拟输入框的placeholder属性

    实现方式:css div:empty:before{ content: attr(placeholder); color:#bbb;}div:focus:before{ content:none; }

  5. Text selection in div(contenteditable) when double click

    背景: 在最近项目中,碰到一个问题:有一个可编辑的div需要双击时可编辑,blur或者回车时将编辑结果保存.你可能注意到双击时,文字会被选中,可编辑区域不会focus到光标位置.考虑到兼容性问题,写了 ...

  6. IOS中div contenteditable=true无法输入 fastclick.js在点击一个可输入的div时,ios无法正常唤起输入法键盘

    原文地址: https://blog.csdn.net/u010377383/article/details/79838562 前言 为了提升移动端click的响应速度,使用了fastclick.js ...

  7. div contenteditable 重新编辑时focus光标定位到前面问题解决

    <div class="editdiv" id="edit" contenteditable="true">这是添加文字< ...

  8. 苹果手机IOS中div contenteditable=true 仿文本域无法输入编辑

    问题: 在苹果手机IOS中 contenteditable="true" 做文本域输入,点击可以弹出键盘但是无法输入,安卓都正常. 经测试后,记得加一个样式 -webkit-use ...

  9. div,contenteditable编辑器之ctrl+enter换行,enter发送

    //回车发消息 $scope.keyDownSend = function ($event) { var keycode = window.event?$event.keyCode:$event.wh ...

随机推荐

  1. GetLastInputInfo计时用户离开电脑及软件在指定时间锁定等(转)

    /************************************************************************/ /* 说明: 调用函数GetLastInputIn ...

  2. Python3基础 print 自带换行功能

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  3. 【leetcode❤python】107. Binary Tree Level Order Traversal II

    #-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init ...

  4. Create,Insert

    创建表 create table people ( id int ,name ) ) create table toys ( id int ,name ) ,people_id int ) CREAT ...

  5. linux sudo apt-get用法详解

    APT的使用(Ubuntu Linux软件包管理工具一)apt-cache search # ------(package 搜索包)apt-cache show #------(package 获取包 ...

  6. So easy Webservice 3.使用HttpClient工具调用Webservice接口

    首先,看看webservice服务调用演示: a) 登录http://www.webxml.com.cn b) 单击手机查询服务 c) 选择要调用的方法 例如: getMobileCodeInfo 输 ...

  7. C# DataGridView控件绑定数据后清空数据

    //1.this.dataGridView1.DataSource = null;//会将DataGridView的列也删掉 //2.this.dataGridView1.Columns.Clear( ...

  8. XAML基础

    1.标记扩展 将一个对象的属性值依赖在其他其他对象的某个属性上 用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAM ...

  9. HTML笔记(二) 在HTML中使用CSS

    外部CSS: <head> <link rel="stylesheet" type="text/css" href="mystyle ...

  10. jQuery 中的children()和 find() 的区别

    <!DOCTYPE html> <html> <head> <script type="text/javascript" src=&quo ...