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 fullscreen全屏实现代码
Apr 09 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
Jan 06 Javascript
利用webqq协议使用python登录qq发消息源码参考
Apr 08 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
JavaScript实现网页对象拖放功能的方法
Apr 15 Javascript
jquery判断当前浏览器的实现代码
Nov 07 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
Jan 25 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 Javascript
vuex实现数据状态持久化
Nov 11 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 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
删除无限级目录与文件代码共享
2006/07/12 PHP
php 操作excel文件的方法小结
2009/12/31 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
bat和python批量重命名文件的实现代码
2016/05/19 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Django 路由控制的实现
2019/07/17 Python
python如何进入交互模式
2020/07/06 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
情人节活动策划方案
2014/02/27 职场文书
可口可乐广告词
2014/03/20 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
房产公证书格式
2015/01/26 职场文书
公司地址变更通知
2015/04/25 职场文书
搞笑婚庆主持词
2015/06/29 职场文书
运动会主持词大全
2015/07/02 职场文书
学校运动会通讯稿
2015/07/18 职场文书