Due to the association between the user requester and the TextRange object, it is an object used to process the text part of the JavaScript object.
TextRange is an object used to represent text in HTML elements. Although we don’t usually use this object often, it is already provided in IE4.0. However, the calling methods provided by TextRange are relatively obscure, so what can we do with it?
The traditional use of TextRange is to operate the text content that the user circles with the mouse on the Web page, such as changing, deleting, adding, etc. But its classic use is to find text in a Web page (this is relatively simple) and get the position of the input box cursor. The latter can derive many more useful uses, such as the MaskTextBox that limits input. Its core technical point is to obtain the cursor position of the input box, and then use regular expressions to determine the input content. There is also "natural navigation in the input box matrix using the arrow keys" that I will introduce later. The core technical point is to obtain the cursor position in the input box.
The entire code to obtain the cursor position in the input box is actually very short, but these objects and methods are not commonly used.
Js code
<span style="font-size: medium;"><script language="javascript"> function GetCursorPsn(txb) { var slct = document.selection; var rng = slct.createRange(); txb.select(); rng.setEndPoint("StartToStart", slct.createRange()); var psn = rng.text.length; rng.collapse(false); rng.select(); return psn; } </script></span>
Here we will talk about the side effects of using the GetCursorPsn() method on input box operations.
For input box
Html code
<span style="font-size: medium;"><input type="text" onkeydown="GetCursorPsn(this)"></span>
It will no longer be able to use the Shift and left arrow keys to select text; for
Html code
<span style="font-size: medium;"><textarea onkeydown="GetCursorPsn(this)"></textarea></span>
, you will no longer be able to use the Shift, up, down, left and right arrow keys to select text. Because after the code obtains the startPoint of the current cursor to the text, calling rng.collapse(false); will change the EditPoint of the text in the text box.
1. A code snippet to meet user requirements. Use the four keys up, down, left, and right to jump to the text box and select the content of the text box at the same time, so as to facilitate user modification. The code is as follows:
Js code
<span style="font-size: medium;">var range = $currentTextfield.createTextRange();//$currentTextfield为jQuery对象 range.moveStart('character',0); range.select();</span>
The following is an imported article about TextRange that I personally feel is quite good:
Html code
<!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> new document </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> body { font-size:12px; } #show { background-color:#CCFF99; } </style> </head> <body> <textarea id="content" cols="30" rows="10"> 河中鱼类离奇死亡,下游居民频染怪病,沿岸植物不断变异,是残留农药?还是生化攻击?敬请关注今晚CCTV-10《科学探索》,即将播出的专题节目:《神秘的河边洗脚人--中国男足》 </textarea> <button id="btn">获取选中值</button> <div id="show"></div> <script> String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); } /* 方法一 FF下有点问题 */ function getSelectText() { try{ // IE: document.selection.createRange() W3C:window.getSelection() var selectText = (document.selection && document.selection.createRange )? document.selection.createRange().text : window.getSelection().toString(); if(selectText != null && selectText.trim() != ""){ return selectText; } }catch(err){} } /* 方法二 */ function getSelectText2(id) { var t = document.getElementById(id); if(window.getSelection) { if(t.selectionStart != undefined && t.selectionEnd != undefined) { return t.value.substring(t.selectionStart, t.selectionEnd); } else { return ""; } } else { return document.selection.createRange().text; } } document.getElementById('btn').onclick = function() { document.getElementById('show').innerHTML = getSelectText2('content'); } </script> </body> </html>