javascript实现textarea中tab键的缩排处理方法


Posted in Javascript onJune 26, 2015

本文实例讲述了javascript实现textarea中tab键的缩排处理方法。分享给大家供大家参考。具体如下:

网上搜索了一下相关的解决方法,其它的有使用两三行javascript解决的,但都有一些小小的问题。还有使用JQuery的,也非常简洁。

本文的javascript代码实现了在TEXTAREA中输入TAB键并自动缩进的功能。不过这段代码在谷歌浏览器中不能正常执行,在

sel =event.srcElement.document.selection.createRange()

这一句会发生错误:
ncaught exception TypeError: Cannot read property 'selection' of undefined

代码在IE中正常执行,如下:

<mce:script type="text/javascript">
<!-- 
function editTab() 
{ 
  var code, sel, tmp, r 
  var tabs="" 
  event.returnValue = false 
  sel =event.srcElement.document.selection.createRange() 
  r = event.srcElement.createTextRange() 
  switch (event.keyCode) 
  { 
    case (8)  : 
      if (!(sel.getClientRects().length > 1)) 
      { 
        event.returnValue = true 
        return 
      } 
      code = sel.text 
      tmp = sel.duplicate() 
      tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top) 
      sel.setEndPoint("startToStart", tmp) 
      sel.text = sel.text.replace(/^/t/gm, "") 
      code = code.replace(/^/t/gm, "").replace(//r/n/g, "/r") 
      r.findText(code) 
      r.select() 
      break 
    case (9)  : 
      if (sel.getClientRects().length > 1) 
      { 
        code = sel.text 
        tmp = sel.duplicate() 
        tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top) 
        sel.setEndPoint("startToStart", tmp) 
        sel.text = "/t"+sel.text.replace(//r/n/g, "/r/t") 
        code = code.replace(//r/n/g, "/r/t") 
        r.findText(code) 
        r.select() 
      } 
      else 
      { 
        sel.text = "/t" 
        sel.select() 
      } 
      break 
    case (13)  : 
      tmp = sel.duplicate() 
      tmp.moveToPoint(r.getBoundingClientRect().left, sel.getClientRects()[0].top) 
      tmp.setEndPoint("endToEnd", sel) 
      for (var i=0; tmp.text.match(/^[/t]+/g) && i<tmp.text.match(/^[/t]+/g)[0].length; i++)  tabs += "/t" 
      sel.text = "/r/n"+tabs 
      sel.select() 
      break 
    default   : 
      event.returnValue = true 
      break 
  } 
} 
// -->
</mce:script>

使用时:

<textarea cols=80 rows=20 name="input" onkeydown="editTab()"></textarea>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
js前台分页显示后端JAVA数据响应
Mar 18 Javascript
使用firebug进行调试javascript的示例
Dec 16 Javascript
js拼接html注意问题示例探讨
Jul 14 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
关于JS变量和作用域详解
Jul 28 Javascript
javascript实现复选框全选或反选
Feb 04 Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
Bootstrap fileinput文件上传组件使用详解
Jun 06 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
Jun 26 #Javascript
jQuery实现鼠标划过添加和删除class的方法
Jun 26 #Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 #Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 #Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 #Javascript
jquery操作angularjs对象
Jun 26 #Javascript
jQuery检查事件是否触发的方法
Jun 26 #Javascript
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
js运动应用实例解析
2015/12/28 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
Python中的lstrip()方法使用简介
2015/05/19 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
django-filter和普通查询的例子
2019/08/12 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
办公设备采购方案
2014/03/16 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
村创先争优活动总结
2014/08/28 职场文书
小学中队长竞选稿
2015/11/20 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python