第一个是在 textarea 输入框中添加固定的内容。

代码如下:

<textarea id="text" cols="30" rows="10"></textarea>
<br>
<button id="btn">添加公司</button>
var textareaIndex = 0;
$("#text").on('keydown',function(e){
textareaIndex = this.selectionStart 1;
if(e.keyCode == 8){
var starText,endText,replaceText;
var text = $(this).val();
var selectionIndex = this.selectionStart-1;
if(text[selectionIndex]==']'){
var result = rep(text,selectionIndex);
$(this).val(result.text);
this.selectionStart = this.selectionEnd = result.index;
return false;
}
}
})
$("#text").click(function(){
textareaIndex = this.selectionStart; // 获取光标所在下标
})
function rep(str,index){
var i = index,k='no';
while(i>0){
if(str[--i]=='['){
k = i;
break;
}
}
if(k=='no')k=index
return {text:str.substring(0,k) str.substring(index 1),index:k}
}
$('#btn').click(function(){
var text = $("#text").val();
var str = text.substring(0,textareaIndex);
var texts = str   '[公司名称]'   text.substring(textareaIndex,text.length);
$("#text").val(texts);
})

效果在此就不展示了。(不过到最后并不能满足大部分需求所以并没有使用这种方法,使用的是 HTML 5 的新属性 contenteditable)。

第二个是研究聊天发表情,是为了实现微信端和小程序端的互相通信,过程中碰到种种困难,尤其是小程序端,所以想到将带表情的内容改变成一个数组形式发送。

代码如下:

var str = '你好,#微笑;1。加油兄弟#握手;#的哈哈但是.#所属;';
function f(str){
var arr = [],tmp = '';
for(var i=0,l=str.length;i<l;i  ){
if(str[i]=='#'&&tmp){
arr.push(tmp);
tmp = '';
}
tmp =str[i];
if(str[i]==';'&&tmp[0]=='#'){
arr.push(tmp);
tmp = '';
}
}
if(tmp)arr.push(tmp)
return arr;
}
var data = f(str);
console.log(data)
// ["你好,", "#微笑;", "1。加油兄弟", "#握手;", "#的哈哈但是."]

允悲,这种方法是可以实现想要的效果的,只不过有点麻烦,尤其是小程序端,不过最后并没有使用这种方法(原因是发现现在的输入法自带表情,不仅表情全而且无需做任何处理)

工作记录(JS向textarea添加固定内容、通过固定字符将字符串分割为数组)相关推荐

  1. 2021-4-27 工作记录--input和textarea出现边框部分失踪+让多个文本输入框左侧对齐+电话号码的正则表达式+图片和文字没有对齐+jQuery滚动视觉差插件+清除浮动

    一.input和textarea在不同屏幕尺寸下出现边框部分失踪的问题 1.解决方法 给input和textarea设置border 2.使用例子 代码: 结果: 二.让多个文本输入框左侧对齐 代码: ...

  2. 【C语言进阶深度学习记录】十二 C语言中的:字符和字符串

    文章目录 1 C语言中的单引号和双引号 1.1 双引号带来的BUG 2 总结 1 C语言中的单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字面量,存储于全局的只读存 ...

  3. js中把字符串分割为数组,把数组转为字符串

    字符串分割为数组,把数组转为字符串 1.字符串分割为数组 let val='1,2,3,4,5' let arr=val.split(',')//arr=['1','2','3','4','5'] 2 ...

  4. js中字符串分割成数组split()方法

    split -> [splɪt] -> 分裂 省略分割参数: var str="How are you doing today?"; var n=str.split() ...

  5. 前端JS数组问题: 数组去重, 字符串分割成数组, 数组拼接成字符串

    1. 数组去重: Array.from(new Set(arr_name)) let arr1 = ['张三','李四','王五','李四','赵六','张三'];let arr2 = Array.f ...

  6. js同步获取文本框textarea输入的内容

    教大家怎么实现 同步获取文本框textarea输入的内容 这个js功能 感觉有点像ajax技术 那么先写HTML标签代码 <textarea name="" cols=&qu ...

  7. 原生js清空上一个元素内容_原生JS实现动态添加新元素、删除元素方法

    1. 添加新元素 动态添加新元素 Coffee Tea Coffee Tea var child = document.getElementsByClassName("child" ...

  8. 【记录】用Javascript实现文本框textarea高度随内容自动适应增长收缩

    // 最小高度     var minRows = 5;     // 最大高度,超过则出现滚动条     var maxRows = 12;     function autoResize(){   ...

  9. js 点击侧边栏展示内容_上海SEO优化网站侧边栏一般添加什么内容

    相关推荐:https://www.huisheng.com/ 上海SEO优化网站侧边栏一般添加什么内容?企业做网站每个板块都是非常重要的,之前跟大家解析了关于导航栏的布局,哪些内容该添加,哪些内容不该 ...

最新文章

  1. 干货,Wireshark使用技巧-过滤规则
  2. SOTA论文也未必能被接收,谷歌科学家Eric Jang谈顶会审稿标准
  3. Heartrate:一个牛逼的工具,Python执行实时可视化
  4. 使用TS自动抓取镜像
  5. 阿里大规模应用Flink踩过的坑:如何大幅降低HDFS压力?
  6. php 策略模式实现原理,php 策略模式原理与应用深入理解
  7. 记一次诡异的SpringMVC中拦截路径的问题
  8. jClarity:在Azure上升级到Java
  9. python中协程与函数的区别_python 协程与go协程的区别
  10. 《程序员修炼之道:从小工到专家》阅读笔记03
  11. ABAP操作Excel(转)
  12. python教程文件 txt_Python读写txt文本文件的操作方法全解析
  13. 电子计算机发展为第五代,电子计算机的发展历程是怎样的?
  14. 博文视点大讲堂第33期——如何让你既能干得漂亮又说得清楚?
  15. c++ static 关键字总结
  16. Android文件资源(raw/data/asset)的存取
  17. 计算机水平测试在线模拟,计算机等级考试一级模拟试题「附答案」
  18. 计算机系统盘怎么扩充,c盘扩大,教您怎么把c盘扩大
  19. 文化财经SAR指标计算(一)
  20. 窃隐私泄露、放高利贷,输入法的暗箱操作

热门文章

  1. 怎样测试手机性能软件,如何检测手机性能的软件
  2. U盘出现“请将磁盘插入U盘”的问题怎么解决?
  3. CUDA页锁定内存(Pinned Memory)
  4. 【校园卡】更新联通校园卡套餐海报及常规操作,校园卡最新消息及选购建议,增加评论功能...
  5. web2.0最全的国外API应用集合
  6. 矩阵出现重复特征值,其特征向量的简便求法
  7. 千杯酒中检测那一杯毒酒的问题及思考
  8. cmd脚本(WIN10下)
  9. 挖掘用户反馈中的宝藏——NLP文本标签化解密
  10. 初学者如何选择适合自己的吉他?0基础新手男女生吉他推荐