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>|&nbsp;/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的更多相关文章

  1. 构造高度自适应的textarea

    高度自适应的textarea,这个需求还是比较常见的,随着用户的输入textarea的高度自动变化,这样输入较少的时候可以节省空间,输入多的时候可以不出现滚动条,让内容尽可能的展现在用户的视线内. 可 ...

  2. 里面的div怎么撑开外面的div,让高度自适应

    关于容器高度自适应的兼容性问题.1.有些时候,我们希望容器有一个固定高度,但当其中的内容多的时候,又希望高度能够自适应,也即容器在纵向能被撑开,且如果有背景,也能够自适应.在一般情况下,使用min-h ...

  3. 里面的div怎么撑开外面的div让高度自适应

    参考网址:http://www.jb51.net/css/140685.html 随着微软新操作系统的上市,ie6现在用的人越来越少了,但是XP系统看来是太过经典,仍然有相当多的用户在使用,且这部分人 ...

  4. Div中高度自适应增长方法

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. CSS: 解决Div float后,父Div无法高度自适应的问题

    在用CSS+DIV的布局中,常常会发现,当一个DIV float之后,假设他的高度超过了其父DIV的高度时,其父DIV的高度并不会对应的进行调整.要解决问题(也叫做闭合(清除)浮动),我们有四种办法: ...

  6. 上中下三个DIV,高度自适应(上高度固定,下固定,中间自适应)(代码来自X人)

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DivDemo.aspx.c ...

  7. 大div套多个小div,怎样设置外div的高度自适应?

    在最后一个div 后面加上 overflow:hidden;如下: <div style="width:580px; height:auto; margin:0 auto; <d ...

  8. div模拟textarea文本域轻松实现高度自适应——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1362 一.关于tex ...

  9. textarea如何实现高度自适应(一)

    转自轩枫阁 - http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 方法一:div模 ...

随机推荐

  1. Redis数据结构(三)

    Redis五种数据类型: (1)字符串 (2)字符串列表 (3)有序字符串集合 (4)哈希 (5)字符串集合 其中(4)(5)应用最多. key命名的注意: (1)不要过长,尽量不要超过1024,会降 ...

  2. 主键冲突异常 DuplicateKeyException

    org.springframework.dao.DuplicateKeyException Exception thrown when an attempt to insert or update d ...

  3. Linux umask权限

    文件基本权限 Linux中文件权限由三部分组成: rw-r--r-- 前三位:表示用户所拥有的权限 中三位:表示用户所在组的权限 后三们:表示其他用户的权限 权限 八进制 十进制 - - - 000 ...

  4. (最短路 SPFA)Invitation Cards -- poj -- 1511

    链接: http://poj.org/problem?id=1511 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82829#probl ...

  5. Bootstrap导航栏

    导航栏: <div id="menu-nav" class="navbar navbar-default navbar-inverse navbar-fixed-t ...

  6. Receiving Transaction Processor Conundrum

    what would we do if we are faced with a situation to execute a receiving transaction in oracle ebusi ...

  7. OA与ERP集成 可行?

    [正文] 近些年来,当谈论到企业信息化的时候,ERP都成为一个热门话题,ERP的出现似乎给企业带来了一个翻天覆地的变化,而且也成为企业实现信息化的"新宠儿".然而OA也曾经是企业信 ...

  8. Mysql部署

    1. 下载 Mysql 版本为: mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz (注意:下载二进制文件)  存放位置: /usr/local 2. 检查机器上 ...

  9. Java Web系列:Hibernate 基础

    从以下5个方面学习hibernate ORM. (1)配置文件:hibernate.cfg.xml XML文件和hibernate.properties属性文件 (2)实体映射:1对多.多对多 (3) ...

  10. 存储系统的基本数据结构之一: 跳表 (SkipList)

    在接下来的系列文章中,我们将介绍一系列应用于存储以及IO子系统的数据结构.这些数据结构相互关联又有着巨大的区别,希望我们能够不辱使命的将他们分门别类的介绍清楚.本文为第一节,介绍一个简单而又有用的数据 ...