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 相关文章推荐
js控制页面控件隐藏显示的两种方法介绍
Oct 09 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
javascript创建和存储cookie示例
Jan 07 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
表单中单选框添加选项和移除选项
Jul 04 Javascript
详解获取jq ul第一个li定位的四种解决方案
Nov 23 Javascript
Javascript同时声明一连串(多个)变量的方法
Jan 23 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
小程序点击图片实现png转jpg
Oct 22 Javascript
VUEX-action可以修改state吗
Nov 19 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
PHP 快速排序算法详解
2014/11/10 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
Python中断言Assertion的一些改进方案
2016/10/27 Python
Django实现文件上传下载
2019/10/06 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
网上快餐厅创业计划书
2014/02/01 职场文书
企业晚会策划方案
2014/05/29 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
试用期辞职信范文
2015/03/02 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
Go语言基础知识点介绍
2021/07/04 Golang
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
世界十大狙击步枪排行榜
2022/03/20 杂记