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 表单的友好用户体现
Jan 07 Javascript
ajax 缓存 问题 requestheader
Aug 01 Javascript
50款非常棒的 jQuery 插件分享
Mar 29 Javascript
js弹出的对话窗口永远保持居中显示
Dec 15 Javascript
intro.js 页面引导简单用法 分享
Aug 06 Javascript
使用JS读秒使用示例
Sep 21 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
js实现简单的选项卡效果
Feb 23 Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
在Vuex中Mutations修改状态操作
Jul 24 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP 快速排序算法详解
2014/11/10 PHP
php判断linux下程序问题实例
2015/07/09 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python编程实现希尔排序
2017/04/13 Python
详解python之协程gevent模块
2018/06/14 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
win10 64bit下python NLTK安装教程
2018/09/19 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
运动会入场解说词300字
2014/01/25 职场文书
高效课堂标语
2014/06/26 职场文书
小学中队活动总结
2015/05/11 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
甲午风云观后感
2015/06/02 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技