JavaScript让Textarea支持tab按键的方法


Posted in Javascript onJune 26, 2015

本文实例讲述了JavaScript让Textarea支持tab按键的方法。分享给大家供大家参考。具体实现方法如下:

HTMLTextAreaElement.prototype.getCaretPosition = function () {
//return the caret position of the textarea
 return this.selectionStart;
};
HTMLTextAreaElement.prototype.setCaretPosition = function (position) {
//change the caret position of the textarea
 this.selectionStart = position;
 this.selectionEnd = position;
 this.focus();
};
HTMLTextAreaElement.prototype.hasSelection = function () {
//if the textarea has selection then return true
 if (this.selectionStart == this.selectionEnd) {
  return false;
 } else {
  return true;
 }
};
HTMLTextAreaElement.prototype.getSelectedText = function () {
//return the selection text
 return this.value.substring(this.selectionStart, this.selectionEnd);
};
HTMLTextAreaElement.prototype.setSelection = function (start, end) {
//change the selection area of the textarea
 this.selectionStart = start;
 this.selectionEnd = end;
 this.focus();
};
var textarea = document.getElementsByTagName('textarea')[0]; 
textarea.onkeydown = function(event) {
 //support tab on textarea
 if (event.keyCode == 9) { //tab was pressed
  var newCaretPosition;
  newCaretPosition = textarea.getCaretPosition() + " ".length;
  textarea.value = textarea.value.substring(0, textarea.getCaretPosition()) + " " + textarea.value.substring(textarea.getCaretPosition(), textarea.value.length);
  textarea.setCaretPosition(newCaretPosition);
  return false;
 }
 if(event.keyCode == 8){
 //backspace
  if (textarea.value.substring(textarea.getCaretPosition() - 4, textarea.getCaretPosition()) == " ") {
  //it's a tab space
   var newCaretPosition;
   newCaretPosition = textarea.getCaretPosition() - 3;
   textarea.value = textarea.value.substring(0, textarea.getCaretPosition() - 3) + textarea.value.substring(textarea.getCaretPosition(), textarea.value.length);
   textarea.setCaretPosition(newCaretPosition);
  }
 }
 if(event.keyCode == 37){ //left arrow
  var newCaretPosition;
  if (textarea.value.substring(textarea.getCaretPosition() - 4, textarea.getCaretPosition()) == " ") {
  //it's a tab space
   newCaretPosition = textarea.getCaretPosition() - 3;
   textarea.setCaretPosition(newCaretPosition);
  } 
 }
 if(event.keyCode == 39){
 //right arrow
  var newCaretPosition;
  if (textarea.value.substring(textarea.getCaretPosition() + 4, textarea.getCaretPosition()) == " ") {
  //it's a tab space
   newCaretPosition = textarea.getCaretPosition() + 3;
   textarea.setCaretPosition(newCaretPosition);
  }
 } 
}

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

Javascript 相关文章推荐
javascript 动态设置已知select的option的value值的代码
Dec 16 Javascript
得到jQuery detach()后节点中的某个值实现代码
Feb 05 Javascript
javascript学习笔记(二)数组和对象部分
Sep 30 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
js密码强度实时检测代码
Mar 02 Javascript
JavaScript之iterable_动力节点Java学院整理
Jun 29 Javascript
JS实现读取xml内容并输出到div中的方法示例
Apr 19 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
vscode中vue-cli项目es-lint的配置方法
Jul 30 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
Layer+Echarts构建弹出层折线图的方法
Sep 25 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 #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
You might like
php算法实例分享
2015/07/14 PHP
浅谈php7的重大新特性
2015/10/23 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
CI框架表单验证实例详解
2016/11/21 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
js获取域名的方法
2015/01/27 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
python实现梯度下降算法
2020/03/24 Python
python中的global关键字的使用方法
2019/08/20 Python
python实现超级马里奥
2020/03/18 Python
python实现学生成绩测评系统
2020/06/22 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
公务员个人考察材料
2014/12/23 职场文书
教师继续教育反思周记
2015/06/25 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫