js操作textarea方法集合


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>js操作textarea方法集合</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">

<style type="text/css">
#testlujun {
width: 348px;
height: 80px;
border: #ddd 1px solid;
background: #fafafa;
padding: 5px 10px;
outline: none;
resize: none;
}

</style>
<body>
<textarea id="testlujun">abcdefghijklmnopqrstuvwxyz</textarea>
<br>
<input onclick="alert(TT.getCursorPosition(test))" type="button" value="光标位置">
<input onclick="TT.setCursorPosition(test,3)" type="button" value="设置光标到第3位置">
<input onclick="TT.add(test,‘你好‘)" type="button" value="添加‘你好‘到光标后面">
<input onclick="TT.del(test,2)" type="button" value="删除光标前2个字符">
<input onclick="TT.del(test,-2)" type="button" value="删除光标后2个字符">
<input onclick="TT.sel(test,0,2)" type="button" value="选中字符0-2的位置">
<input onclick="TT.selString(test,‘mno‘)" type="button" value="选中字符‘mno‘的位置">
</body>
<script type="text/javascript">
// <![CDATA[
var test = document.getElementById(‘testlujun‘);
var TT = {
/*
* 获取光标位置
* @Method getCursorPosition
* @param t element
* @return number
*/
getCursorPosition: function(t) {
if (document.selection) {
t.focus();
var ds = document.selection;
var range = ds.createRange();
var stored_range = range.duplicate();
stored_range.moveToElementText(t);
stored_range.setEndPoint("EndToEnd", range);
t.selectionStart = stored_range.text.length - range.text.length;
t.selectionEnd = t.selectionStart + range.text.length;
return t.selectionStart;
} else {
return t.selectionStart;
}
},

/*
* 设置光标位置
* @Method setCursorPosition
* @param t element
* @param p number
* @return
*/
setCursorPosition: function(t, p) {
this.sel(t, p, p);
},

/*
* 插入到光标后面
* @Method add
* @param t element
* @param txt String
* @return
*/
add: function(t, txt) {
var val = t.value;
if (document.selection) {
t.focus();
document.selection.createRange().text = txt;
} else {
var cp = t.selectionStart;
var ubbLength = t.value.length;
var s = t.scrollTop;
// document.getElementById(‘aaa‘).innerHTML += s + ‘<br />‘;
t.value = t.value.slice(0, t.selectionStart) + txt + t.value.slice(t.selectionStart, ubbLength);
this.setCursorPosition(t, cp + txt.length);
// document.getElementById(‘aaa‘).innerHTML += t.scrollTop + ‘<br />‘;
firefox = navigator.userAgent.toLowerCase().match(/firefox\/([\d\.]+)/) && setTimeout(function() {
if (t.scrollTop != s) t.scrollTop = s;
},
0)

};
},

/*
* 删除光标 前面或者后面的 n 个字符
* @Method del
* @param t element
* @param n number n>0 后面 n<0 前面
* @return
* 重新设置 value 的时候 scrollTop 的值会被清0
*/
del: function(t, n) {
var p = this.getCursorPosition(t);
var s = t.scrollTop;
var val = t.value;
t.value = n > 0 ? val.slice(0, p - n) + val.slice(p) : val.slice(0, p) + val.slice(p - n);
this.setCursorPosition(t, p - (n < 0 ? 0 : n));
firefox = navigator.userAgent.toLowerCase().match(/firefox\/([\d\.]+)/) && setTimeout(function() {
if (t.scrollTop != s) t.scrollTop = s;
},
10)
},

/*
* 选中 s 到 z 位置的文字
* @Method sel
* @param t element
* @param s number
* @param z number
* @return
*/
sel: function(t, s, z) {
if (document.selection) {
var range = t.createTextRange();
range.moveEnd(‘character‘, -t.value.length);
range.moveEnd(‘character‘, z);
range.moveStart(‘character‘, s);
range.select();
} else {
t.setSelectionRange(s, z);
t.focus();
}

},

/*
* 选中一个字符串
* @Method sel
* @param t element
* @param s String
* @return
*/
selString: function(t, s) {
var index = t.value.indexOf(s);
index != -1 ? this.sel(t, index, index + s.length) : false;
}

}
// ]]>
</script>
</html>

整理自《封装js操作textarea 方法集合(兼容很好)》

时间: 2024-11-02 23:28:13

js操作textarea方法集合的相关文章

【分享】 封装js操作textarea 方法集合(兼容很好)。

请使用下面的btn操作. 虽然你现在看来没什么用,当要用的时候又到处找资料,还不如现在收集一下. 在DOM里面操作textarea里面的字符,是比较麻烦的. 于是我有这个封装分享给大家,测试过IE6,8, firefox ,chrome, opera , safari.兼容没问题. 注意:在firefox下 添加字符串的时候有个bug 就是scrollTop 会等于0,当然解决了,但是不够完美.如果有高手也研究过,麻烦指点下. var TT = { /* * 获取光标位置 * @Method g

js操作cookies方法

<!DOCTYPE html><html><head> <meta Charset="utf-8"> <title>js操作cookies方法</title></head><body> <div>Js操作cookies方法!</div><script> //JS操作cookies方法! //写cookies function setCookie(name,

js操作cookie方法

cookie cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109和2965都已废弃,最新取代的规范是RFC6265. cookie的作用 服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态.Cookies最典型的应用是判定注册用户是否已 经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Co

javascript、js操作json方法总结(json字符创转换json对象)

相信前端的同学们对json并不陌生,接触过很多.但是很少人知道json的全称是什么,哈哈,我也是查资 料知道的.(JSON JavaScript Object Notation是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.) json可以以数组传递,也可以以对象传递,我前面的文章PHP对发布版本时间轴数据处理,返回的json格式,是一个数组json,然后里面含有对象,这是json常见的格式.后来经过php的处理,结构又发生了变化,最外层是一个对象了,里面是数组和

JS数组遍历方法集合

就让我们在逆战中成长吧,加油武汉,加油自己 1.for循环 使用零时变量将长度存起来,当数组较大时优化效果才会比较明显. var ar1=[2,4,6,8] for(var i=0;i<ar1.length;i++){ console.log(i) console.log(ar1[i]) } 2.foreach循环 遍历数组中每个数,没有返回值 使用break不能中断循环,使用return也不能返回到外层函数 var ar1=[2,4,6,8] ar1.foreach((item,index,a

C# 操作IIS方法集合

如果在win8,win7情况下报错:未知错误(0x80005000) 见http://blog.csdn.net/ts1030746080/article/details/8741399 using System;using System.Collections;using System.Collections.Generic;using System.DirectoryServices;using System.Linq;using System.Net;using System.Text;u

js数组去重方法集合

//第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', 'a']; var newArr = []; var len = arr.length; for (i = 0; i < len; i++) { var flag = false; for (var member of newArr) { if (member === arr[i]) { flag =

Js操作DOM的方式及获取浏览器的宽高

我们在为页面加入一些动态效果或实现一些脚本功能时,需要对文档body中的元素进行操作,也就是,我们需要使用js或jQuery来对dom操作.下面呢,我说一下js是怎样对dom操作的. document.write(),这既可以向文档输出文本,也可以写入代码来添加元素. 获取需要操作的元素: 利用id获取就是:document.getElementById("name"); 利用class获取就是:document.getElementsByClassName("name&qu

JS操作字符串常用的方法

JS操作String对象的方法 charAt(index):返回指定索引处的字符串charCodeAt(index):返回指定索引处的字符的Unicode的值concat(str1,str2,...):连接多个字符串,返回连接后的字符串的副本fromCharCode():将Unicode值转换成实际的字符串indexOf(str):返回str在父串中第一次出现的位置,若没有则返回-1lastIndexOf(str):返回str在父串中最后一次出现的位置,若没有则返回-1match(regex):