div实现高度自适应的textarea

textarea使我们常常使用的一种表单形式,多用于大段文字的输入,大多数情况下,textarea都是可以满足需求的,但是当我们希望这个输入框高度自适应的时候,textarea就很难做到了。 ok,主角登场,html5中的 contenteditable 可以做到。
文档: http://www.w3school.com.cn/tags/att_global_contenteditable.asp
即这个属性是直接添加在标签中的,属性值为true则为可编辑,属性值为false则为不可编辑。
下面的这段代码即可实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>contenteditable</title>
<style>
div.foo {
width: 400px;
min-height: 30px;
max-height: 200px;
outline: none;
overflow-y: auto;
border: thin solid red;
padding: 5px;
}
</style>
</head>
<body>
<div contenteditable="true" class="foo"></div>
</body>
</html>
即创建的这个div的宽度是固定的,高度最小值为30px,最大值为200px,outline设置为none,当高度超出时出现滚动条, 给一个红色的border,添加padding美化效果,最终展示如下:

可以看到, 这里当我们回车时就会创建一个新的div,并且在某些情况下会创建一个<br>标签。
那么我们可以通过使用正则表达式来去除之:
document.querySelector('.foo').innerHTML.replace(/<div>|<\/div>|<br>| /g, "");
这样得到的结果就是: "第一:这时非常好的一件事情。第二:不错。第三:JS一统天下。"
于是,我们就可以以此来提交表单了。
但是,事情并没有这么简单,因为,通过尝试发现,这里不仅可以使用文本,还可以填充富文本,如下:

这时再用正则来处理就有问题了。
其实 contenteditable 提供的不仅仅是true和false,还可以使用 plaintext-only 作为值,如下:
<div contenteditable="plaintext-only" class="foo"></div>
这样就既不用使用正则,也不需要担心富文本的输入了。
更多可以参考这篇文章:http://www.zhangxinxu.com/wordpress/2016/01/contenteditable-plaintext-only/
div实现高度自适应的textarea的更多相关文章
- 构造高度自适应的textarea
高度自适应的textarea,这个需求还是比较常见的,随着用户的输入textarea的高度自动变化,这样输入较少的时候可以节省空间,输入多的时候可以不出现滚动条,让内容尽可能的展现在用户的视线内. 可 ...
- 里面的div怎么撑开外面的div,让高度自适应
关于容器高度自适应的兼容性问题.1.有些时候,我们希望容器有一个固定高度,但当其中的内容多的时候,又希望高度能够自适应,也即容器在纵向能被撑开,且如果有背景,也能够自适应.在一般情况下,使用min-h ...
- 里面的div怎么撑开外面的div让高度自适应
参考网址:http://www.jb51.net/css/140685.html 随着微软新操作系统的上市,ie6现在用的人越来越少了,但是XP系统看来是太过经典,仍然有相当多的用户在使用,且这部分人 ...
- Div中高度自适应增长方法
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- CSS: 解决Div float后,父Div无法高度自适应的问题
在用CSS+DIV的布局中,常常会发现,当一个DIV float之后,假设他的高度超过了其父DIV的高度时,其父DIV的高度并不会对应的进行调整.要解决问题(也叫做闭合(清除)浮动),我们有四种办法: ...
- 上中下三个DIV,高度自适应(上高度固定,下固定,中间自适应)(代码来自X人)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DivDemo.aspx.c ...
- 大div套多个小div,怎样设置外div的高度自适应?
在最后一个div 后面加上 overflow:hidden;如下: <div style="width:580px; height:auto; margin:0 auto; <d ...
- div模拟textarea文本域轻松实现高度自适应——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1362 一.关于tex ...
- textarea如何实现高度自适应(一)
转自轩枫阁 - http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 方法一:div模 ...
随机推荐
- Redis数据结构(三)
Redis五种数据类型: (1)字符串 (2)字符串列表 (3)有序字符串集合 (4)哈希 (5)字符串集合 其中(4)(5)应用最多. key命名的注意: (1)不要过长,尽量不要超过1024,会降 ...
- 主键冲突异常 DuplicateKeyException
org.springframework.dao.DuplicateKeyException Exception thrown when an attempt to insert or update d ...
- Linux umask权限
文件基本权限 Linux中文件权限由三部分组成: rw-r--r-- 前三位:表示用户所拥有的权限 中三位:表示用户所在组的权限 后三们:表示其他用户的权限 权限 八进制 十进制 - - - 000 ...
- (最短路 SPFA)Invitation Cards -- poj -- 1511
链接: http://poj.org/problem?id=1511 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82829#probl ...
- Bootstrap导航栏
导航栏: <div id="menu-nav" class="navbar navbar-default navbar-inverse navbar-fixed-t ...
- Receiving Transaction Processor Conundrum
what would we do if we are faced with a situation to execute a receiving transaction in oracle ebusi ...
- OA与ERP集成 可行?
[正文] 近些年来,当谈论到企业信息化的时候,ERP都成为一个热门话题,ERP的出现似乎给企业带来了一个翻天覆地的变化,而且也成为企业实现信息化的"新宠儿".然而OA也曾经是企业信 ...
- Mysql部署
1. 下载 Mysql 版本为: mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz (注意:下载二进制文件)  存放位置: /usr/local 2. 检查机器上 ...
- Java Web系列:Hibernate 基础
从以下5个方面学习hibernate ORM. (1)配置文件:hibernate.cfg.xml XML文件和hibernate.properties属性文件 (2)实体映射:1对多.多对多 (3) ...
- 存储系统的基本数据结构之一: 跳表 (SkipList)
在接下来的系列文章中,我们将介绍一系列应用于存储以及IO子系统的数据结构.这些数据结构相互关联又有着巨大的区别,希望我们能够不辱使命的将他们分门别类的介绍清楚.本文为第一节,介绍一个简单而又有用的数据 ...