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 相关文章推荐
在jQuery1.5中使用deferred对象 着放大镜看Promise
Mar 12 Javascript
javascript针对DOM的应用分析(四)
Apr 15 Javascript
JavaScript转换农历类实现及调用方法
Jan 27 Javascript
jquery实现弹出层效果实例
May 19 Javascript
浅析JavaScript中break、continue和return的区别
Nov 30 Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
vue配置接口域名方法总结
May 12 Javascript
微信小程序云开发之模拟后台增删改查
May 16 Javascript
vue el-table实现行内编辑功能
Dec 11 Javascript
js实现九宫格抽奖
Mar 19 Javascript
JavaScript如何操作css
Oct 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
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
网站上面有这种切换效果
2006/06/26 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Python爬虫工程师面试问题总结
2018/03/22 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python调用staf自动化框架的方法
2018/12/26 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
会计应届生的自荐信
2013/12/13 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
高一新生军训感言
2014/03/02 职场文书
招标授权委托书样本
2014/09/23 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
PyTorch 如何自动计算梯度
2021/05/23 Python
python神经网络Xception模型
2022/05/06 Python