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 TO HTML 转换
Jun 26 Javascript
alert和confirm功能介绍
May 21 Javascript
JavaScript中的Repaint和Reflow用法详解
Jul 27 Javascript
基于jquery css3实现点击动画弹出表单源码特效
Aug 31 Javascript
jQuery EasyUI Tab 选项卡问题小结
Aug 16 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
vue router 组件的高级应用实例代码
Apr 08 Javascript
详解vue更改头像功能实现
Apr 28 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
Sep 09 Javascript
js实现的订阅发布者模式简单示例
Mar 14 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入门学习笔记之一
2010/10/12 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP类型约束用法示例
2016/09/28 PHP
Laravel 队列使用的实现
2019/01/08 PHP
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Python os.access()用法实例
2019/02/18 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python 初始化一个定长的数组实例
2019/12/02 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Python类及获取对象属性方法解析
2020/06/15 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
大学校庆策划书
2014/01/31 职场文书
入队仪式主持词
2015/07/04 职场文书
排球赛新闻稿
2015/07/17 职场文书
Python测试框架pytest高阶用法全面详解
2022/06/01 Python