文本框的默认现象:

  • textarea如果设置cols和rows来规定textarea的尺寸,那么textarea的默认宽高是这俩属性设置的值,可以通过鼠标拖拽缩放文本框的尺寸。
  • textarea如果设定了宽高,那么如果文本超出框的高度,会自动出现滚动条。而不会撑开文本框的高度。
  • 如果什么也不设置,最小宽高很窄很细,随便输入内容也会超出文本框隐藏,且自动增加滚动条。

首先先做一些表面工作:

设置一些样式

      width: 300px;
height: 300px;
border: 1px solid royalblue;
padding: 20px;
border-radius: 5px;
resize: none;

   resize:none; 去掉右下角的这个可自动伸缩的样子和功能。

然后文字输入多了,默认就成了这样:

因为文本框的宽高固定死了, 还是超出出现了滚动条。

怎么让文本框初始化设置一定的高度,但是文字超出时自动跟随内容的高度伸缩?

答: 初始化高度通过css设置(如上),自动伸缩的高度值通过js来计算(如下)。

如果js计算的话,就需要事件触发,用change事件?

答:但是change事件体验不好。

为什么?

change事件的现象是,输入框失去焦点的时候才会触发。如果文本框内容超出高度然后用户还在输入的时候,体验就会很不好。而且如果用户一直不点击别的地方让textarea失去焦点,这个事件就永远不会触发,文本框的高度就不变。

比如输入过程中,就成了这样:

然后点击别的地方才会一次性的展开:

所以需要每次输入的时候就触发计算,就得用键盘事件而不是change事件:

键盘事件需要监听的是键每次弹起的时候,即keyup事件(刚才想了想,貌似监听keydown按压事件也不是不可以的)

每次事件触发的时候,需要做什么?

答:就是计算文本框的滚动高度,即内容高度

具体怎么做?

答:键盘每次弹起的时候,获取文本框的内容高度添加给文本框的高度,即可让其实时的跟随内容自适应。

内容高度用什么属性计算?

即:scrollHeight:给定对象的滚动高度,即内容的可视高度。

function textareaH(box){
let obj = $(box);
obj.style.height = obj.scrollHeight + 'px';
}
$('textarea').on('keyup',function(){
textareaH('textarea');
});

  

如果一个页面有多个textarea都需要这个怎么办?一个一个的加或者调用封装函数?

不用,可以在计算高度的时候获取多个,并循环计算:

function textareaH(){
let obj = $('textareaClass'),
len = obj.length;
for (let i = 0; i < len; i++) {
// console.log(obj[i]);
obj[i].style.height = 'auto';
obj[i].style.height = obj[i].scrollHeight + 'px';
}
}

  

2018-08-22  19:49:56

JS案例 - 可自动伸缩高度的textarea文本框的更多相关文章

  1. Jquery实现 TextArea 文本框根据输入内容自动适应高度

    原文 Jquery实现 TextArea 文本框根据输入内容自动适应高度 在玩微博的时候我们可能会注意到一个细节就是不管是新浪微博还是腾讯微博在转发和评论的时候给你的默认文本框的高度都不会很高,这可能 ...

  2. 如何限制textarea文本框的输入字数

    代码实例如下: <!doctype html><html><head><meta charset="UTF-8"><title ...

  3. jQuery实现限制input框 textarea文本框输入字符数量的方法

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 限制textarea 文本框的长度(收集了几个办法)

    文章参考地址:http://blog.csdn.net/nhconch/article/details/4223076 需求背景: 前几天,因为客户有一个需求说,需要对一个评论(一个textarea文 ...

  5. js获取子节点和修改input的文本框内容

    js获取子节点和修改input的文本框内容 js获取子节点: $("#"+defaultPVItemId).children().eq(3); //获取某个选择器下的第四个子节点 ...

  6. 【kindeditor】KindEditor获取多个textarea文本框的值并判断非空

    kindeditor官网:http://kindeditor.net/demo.php 如何获取多个KindEditor中textarea文本框的值,方式很多种(带有HTML标签). var intr ...

  7. js限制textarea文本框的文字个数

    现在发微博,那个文本框一般只能输入200字好像,再多就会自动删除,要么是提示字数受限,用Js就可实现本功能.今天带来的这个Js限制表单文本 框文字数量的例子,相信有此方面需要的是个不错的参考.为了便于 ...

  8. html5 textarea 文本框根据输入内容自适应高度

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. 【WPF】自动完成/智能提示的文本框(AutoCompleteBox)

    使用了插件WPFToolKit.(直接在Nuget中搜即可) 使用方法参考这篇文章: http://www.broculos.net/2014/04/wpf-autocompletebox-autoc ...

随机推荐

  1. QComboBox:类似于的百度的搜索提示

    参考: http://blog.csdn.net/lingchen214/article/details/17960789 http://blog.sina.com.cn/s/blog_a6fb6cc ...

  2. 作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔

    作为一枚第二天上班的小小.net程序员(技术宅的那种)很迷茫哦,第一个随笔

  3. Php反转字符串函数

    From: http://blog.csdn.net/happy664618843/article/details/5861138

  4. LinuxMint系统下Gate One的安装指南

    1. Gate One简介 前面有两个随笔介绍过开源软件tty.js和wetty在Linux的安装.Tty.js和wetty都是采用Node.js实现的开源Web-based ssh.今天来介绍另一个 ...

  5. synchronized关键字的用法总结

    synchronized关键字主要有以下这3种用法: 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代 ...

  6. Window 10 :我的性能优化:那效果,杠杠的!

    微软的 windows 10,不错! 当全新安装后,性能总觉得别别扭扭,不那么干净利落. 下面就是我的个人优化措施,期间有很多技术性的操作,如果你没有动手能力,或者是技术小白,可以不用再看了! (1) ...

  7. CCProxy序列号及注册码

    CCProxy无限用户版序列号:JHEHIHCDDAHC 注册码:15f7f78febfaee55afeafefff7cb7fdfb3

  8. HTML5标签canvas制作平面图

    摘要: HTML5规范已经完成了,互联网上已经有数不清的站点使用了HTML5.从现在开始研究HTML5,本文是自己在学习canvas过程中的记录,以备后需. 历史: 这个 HTML 元素是为了客户端矢 ...

  9. Eclipse------启动Server时出现弹窗Server at localhost was unable to start within 45 seconds.

    弹窗详细信息: Server Tomcat v8. Server at localhost was unable to start within seconds. If the server requ ...

  10. RESTful api架构设计

    阮老师的这两篇文章足够了 理解 RESTful 架构 RESTful API 设计指南