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 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
javascript+dom树型菜单类,希望朋友们一起进步
May 03 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
Jun 08 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
javascript 中的事件委托详解
Oct 25 Javascript
vue实现文件上传功能
Aug 13 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 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
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
浅谈Vue.js
2017/03/02 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
Python3 操作符重载方法示例
2017/11/23 Python
flask中过滤器的使用详解
2018/08/01 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
python线性插值解析
2020/07/05 Python
如何清空python的变量
2020/07/05 Python
利用python汇总统计多张Excel
2020/09/22 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
2014年父亲节活动方案
2014/03/06 职场文书
母校寄语大全
2014/04/10 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
如何写好活动总结
2019/06/21 职场文书