-
获取textarea光标位置
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>Demo : Textarea 元素的光标位置</title>
- <style type="text/css">
- #result
- {
- font-size: 18px;
- line-height: 25px;
- padding-left: 20px;
- }
- </style>
- </head>
- <body>
- <div>
- <h1>
- Textarea 元素的光标位置</h1>
- <ul>
- <li>获取 Textarea 元素当前的光标位置</li>
- <li>设置回原先的 Textarea 元素的光标位置</li>
- <li>在 Textarea 元素的光标位置插入文本</li>
- </ul>
- <form action="#">
- <textarea id="test" rows="8" cols="50"></textarea>
- <p>
- <input type="button" id="get" value="Get Cursor Position" />
- <input type="button" id="set" value="Set Cursor Position" />
- <input type="button" id="add" value="Add Text After Cursor Position" />
- </p>
- </form>
- <h2>
- Textarea Range:</h2>
- <div id="result">
- </div>
- <script type="text/javascript">
-
- document.getElementById("get").onclick = function () {
- //alert(tx.value.length);
- var tx = document.getElementById("test");
- var re = document.getElementById("result");
- var pos = cursorPosition.get(tx);
- re.innerHTML = ("<strong>Range :</strong> (" + pos.start + ", " + pos.end + ")<br /><strong>Text :</strong> " + (!pos.text ? '//--' : pos.text));
- }
-
- document.getElementById("set").onclick = function () {
- var tx = document.getElementById("test");
- var re = document.getElementById("result");
- var pos = cursorPosition.get(tx);
- cursorPosition.set(tx, pos);
- re.innerHTML = "";
- }
-
- document.getElementById("add").onclick = function () {
- var tx = document.getElementById("test");
- pos = cursorPosition.get(tx);
- cursorPosition.add(tx, pos, input = prompt("你想插入替换的文本:", ""));
- }
-
- /**
- * cursorPosition Object
- */
- var cursorPosition = {
- get: function (textarea) {
- var rangeData = { text: "", start: 0, end: 0 };
-
- if (textarea.setSelectionRange) { // W3C
- textarea.focus();
- rangeData.start = textarea.selectionStart;
- rangeData.end = textarea.selectionEnd;
- rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end) : "";
- } else if (document.selection) { // IE
- textarea.focus();
- var i,
- oS = document.selection.createRange(),
- // Don't: oR = textarea.createTextRange()
- oR = document.body.createTextRange();
- oR.moveToElementText(textarea);
-
- rangeData.text = oS.text;
- rangeData.bookmark = oS.getBookmark();
-
- // object.moveStart(sUnit [, iCount])
- // Return Value: Integer that returns the number of units moved.
- for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i++) {
- // Why? You can alert(textarea.value.length)
- if (textarea.value.charAt(i) == '
') {
- i++;
- }
- }
- rangeData.start = i;
- rangeData.end = rangeData.text.length + rangeData.start;
- }
-
- return rangeData;
- },
-
- set: function (textarea, rangeData) {
- var oR, start, end;
- if (!rangeData) {
- alert("You must get cursor position first.")
- }
- textarea.focus();
- if (textarea.setSelectionRange) { // W3C
- textarea.setSelectionRange(rangeData.start, rangeData.end);
- } else if (textarea.createTextRange) { // IE
- oR = textarea.createTextRange();
-
- // Fixbug : ues moveToBookmark()
- // In IE, if cursor position at the end of textarea, the set function don't work
- if (textarea.value.length === rangeData.start) {
- //alert('hello')
- oR.collapse(false);
- oR.select();
- } else {
- oR.moveToBookmark(rangeData.bookmark);
- oR.select();
- }
- }
- },
-
- add: function (textarea, rangeData, text) {
- var oValue, nValue, oR, sR, nStart, nEnd, st;
- this.set(textarea, rangeData);
-
- if (textarea.setSelectionRange) { // W3C
- oValue = textarea.value;
- nValue = oValue.substring(0, rangeData.start) + text + oValue.substring(rangeData.end);
- nStart = nEnd = rangeData.start + text.length;
- st = textarea.scrollTop;
- textarea.value = nValue;
- // Fixbug:
- // After textarea.values = nValue, scrollTop value to 0
- if (textarea.scrollTop != st) {
- textarea.scrollTop = st;
- }
- textarea.setSelectionRange(nStart, nEnd);
- } else if (textarea.createTextRange) { // IE
- sR = document.selection.createRange();
- sR.text = text;
- sR.setEndPoint('StartToEnd', sR);
- sR.select();
- }
- }
- }
- </script>
- </div>
- </body>
- </html>
-
相关阅读:
10、函数介绍、函数参数、函数的返回值
9、bytes类型,文件处理
8、集合类型、文件处理
7、列表类型、元组、字典类型
6、for循环补充、可变类型与不可变类型、基本操作
5、while循环与for循环
4、基本运算符、if语法
3、变量、常量、基本数据类型
爬虫(一)
小技能(二)
-
原文地址:https://www.cnblogs.com/hsdying/p/9019828.html
Copyright © 2020-2023
润新知