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 代码压缩工具小结
Feb 27 Javascript
js中eval详解
Mar 30 Javascript
使用Browserify配合jQuery进行编程的超级指南
Jul 28 Javascript
javascript数据类型验证方法
Dec 31 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
vue.js中指令Directives详解
Mar 20 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 Javascript
vue日历/日程提醒/html5本地缓存功能
Sep 02 Javascript
微信小程序静默登录的实现代码
Jan 08 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 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二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
jQuery的学习步骤
2011/02/23 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
python正则表达式之对号入座篇
2018/07/24 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
python datetime处理时间小结
2020/04/16 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python实现磁盘日志清理的示例
2020/11/05 Python
python-地图可视化组件folium的操作
2020/12/14 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
集团薪酬管理制度
2014/01/13 职场文书
环保建议书600字
2014/05/14 职场文书
社区文明倡议书
2015/04/28 职场文书
军训结束新闻稿
2015/07/17 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python
一条 SQL 语句执行过程
2022/03/17 MySQL
什么是Python装饰器?如何定义和使用?
2022/04/11 Python