当前位置: 首页 > 编程笔记 >

JavaScript让Textarea支持tab按键的方法

申博厚
2023-03-14
本文向大家介绍JavaScript让Textarea支持tab按键的方法,包括了JavaScript让Textarea支持tab按键的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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实现textarea中tab键的缩排处理方法,包括了javascript实现textarea中tab键的缩排处理方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现textarea中tab键的缩排处理方法。分享给大家供大家参考。具体如下: 网上搜索了一下相关的解决方法,其它的有使用两三行javascript解决的,但都有一些小小的问

  • 问题内容: 如何在TextArea中单击Tab键导航到下一个控件? 我可以向cath de键按下事件添加一个侦听器,但是如何使TextArea控件失去焦点(不知道链中的下一个要聚焦的字段)? 问题答案: 如果按TAB键,则此代码遍历焦点;如果按CONTROL + TAB键,则插入标签。

  • 本文向大家介绍让JavaScript中setTimeout支持链式操作的方法,包括了让JavaScript中setTimeout支持链式操作的方法的使用技巧和注意事项,需要的朋友参考一下 修改很简单,通过参数判断,然后返回下promise对象 调用

  • 问题内容: 现在,我正在研究网络爬虫。这个应该解析一些特定的站点,并输出一个xml文件。至此,这没有问题。搜寻器有效,您可以通过cfg文件快速地对其进行自定义。我使用Jsoup解析HTML内容。 我刚刚添加了几个站点,并注意到通过JavaScript创建的HTML内容存在很大的问题。没有办法使Jsoup支持Javascript吗?或者至少获得我在浏览器中可以看到的完整HTML内容。 我已经尝试过H

  • 本文向大家介绍让Nginx支持shtml格式的配置方法,包括了让Nginx支持shtml格式的配置方法的使用技巧和注意事项,需要的朋友参考一下 对于静态网站有公共头尾需要包含,又不想用动态网页编写的,那么shtml是最佳选择了。shtml可以包含指定文件到文档中如同PHP中的include功能类似。 Nginx本身已经支持了shtml格式文件解析,但默认是不开启的,需要手动开启。 打开Nginx配

  • 本文向大家介绍让CodeIgniter的ellipsize()支持中文截断的方法,包括了让CodeIgniter的ellipsize()支持中文截断的方法的使用技巧和注意事项,需要的朋友参考一下 CodeIgniter的Text Helper有一个ellipsize()方法,用来过滤HTML标签并且截断文字十分好用。但是它对中文支持的特别不好,在中文中使用就有乱码出现。 下面有网友将functio