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 相关文章推荐
解决FireFox下[使用event很麻烦]的问题
Nov 26 Javascript
一个基于jquery的图片切换效果
Jul 06 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
jquery实现拖拽调整Div大小
Jan 30 Javascript
JS去除iframe滚动条的方法
Apr 01 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
jQuery事件委托代码实践详解
Jun 21 jQuery
extjs图表绘制之条形图实现方法分析
Mar 06 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 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脚本的10个技巧(5)
2006/10/09 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
详解Python编程中包的概念与管理
2015/10/16 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
学生档案自我鉴定
2013/10/07 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
离婚协议书范文
2015/01/26 职场文书
文体活动总结
2015/02/04 职场文书
公司人事任命通知
2015/04/20 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书