div实现自适应高度的textarea实现angular双向绑定


Posted in Javascript onJanuary 08, 2017

相信不少同学模拟过腾讯的QQ做一个聊天应用,至少我是其中一个。

过程中我遇到的一个问题就是QQ输入框,自适应高度,最高高度为3row。

如果你也像我一样打算使用textarea,那么很抱歉,你一开始就错了。

textarea不是不可以的,然后我是这样错的。(就是监听scroll 如果出现了,就增加1rows 的高度)然而这样真的很挫

textarea.bind('change','keydown'){
 if(scrollTop > 0 ) {
 textarea.rows += 1
 }
}

正确的打开方式应该是利用 html5 全局属性,然而在ios 移动端中,仅使用contenteditable,是无法获得焦点的,无法进行输入的,因此需要添加use-select属性

<div contenteditable='true' style='-webkit-use-select:text'></div>
//不同浏览器,支持度,和实现方式也有点不一样,android和ios默认webkit内核,所以使用这个够了

在angular中使用可编辑的div:——》 angular的ng-model指令只用于select,input,textarea,不适用于div,所以要进一步封装

/*
* 可编辑的div
* 应用于发表评论中有表情的时候,div中添加img(表情)
* <div contenteditable strp-br='true' style='-webkit-use-select:text'></div>
*/
app.directive('contenteditable', function() {
 return {
 restrict: 'A', 
 require: '?ngModel', 
 link: function(scope, element, attrs, ngModel) {
 if (!ngModel) return; 
 ngModel.$render = function() {
 element.html(ngModel.$viewValue || '');
 };
 element.on('blur keyup change', function() {
 scope.$evalAsync(read);
 });
 read(); // initialize
 function read() {
 var html = element.html();
 if ( attrs.stripBr && html == '<br>' ) { //清除 <br>
  html = '';
 }
 ngModel.$setViewValue(html);
 }
 }
 };
});

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
JavaScript基础知识之数据类型
Aug 06 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
Nov 22 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
Javascript连接多个数组不用concat来解决
Mar 24 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
详解js的异步编程技术的方法
Feb 09 Javascript
表格展示利器 Bootstrap Table实例代码
Sep 06 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 Javascript
JavaScript中日常收集常见的10种错误(推荐)
Jan 08 #Javascript
详解js中==与===的区别
Jan 08 #Javascript
JavaScript 动态三角函数实例详解
Jan 08 #Javascript
你不知道的 javascript【推荐】
Jan 08 #Javascript
js时间控件只显示年月
Jan 08 #Javascript
javascript函数的四种调用模式
Jan 08 #Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 #Javascript
You might like
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
做网页的一些技巧
2007/02/01 Javascript
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
js中less常用的方法小结
2017/08/09 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python selenium文件上传方法汇总
2020/11/19 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
django的model操作汇整详解
2019/07/26 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
专升本自我鉴定
2013/10/10 职场文书
开会迟到检讨书
2014/01/08 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2015年教师国培感言
2015/08/01 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
Python爬虫之爬取某文库文档数据
2021/04/21 Python
python如何读取.mtx文件
2021/04/22 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python