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 相关文章推荐
jquery中获取元素的几种方式小结
Jul 05 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
JavaScript插件化开发教程 (二)
Jan 27 Javascript
JavaScript节点及列表操作实例小结
Aug 05 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
jQuery实现删除li节点的方法
Dec 06 Javascript
js比较两个单独的数组或对象是否相等的实例代码
Apr 28 Javascript
vue项目在线上服务器访问失败原因分析
Aug 14 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
js常用函数 不错
2006/09/08 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python中with及contextlib的用法详解
2017/06/08 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
浅析Python迭代器的高级用法
2020/07/16 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
出国留学自荐信
2013/10/25 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
会计简历自我评价
2015/03/10 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
2015年中秋寄语
2015/07/31 职场文书
docker-compose部署Yapi的方法
2022/04/08 Servers
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB