<div contentEditable="true" id="input" onclick="getValue(this)">abcdefghilj</div> <script type="text/javascript"> function getPosition(obj){ var result = 0; if(obj.selectionStart){ //非IE浏览器 result = obj.selectionStart }else{ //IE var rng= document.selection.createRange(); rng.moveStart("character",-obj.innerHTML.length); result = rng.text.length; } return result; }
function getValue(obj){ var pos = getPosition(obj); var str=obj.innerHTML.substr(pos-1,obj.innerHTML.length); alert(pos)//这里就是光标后面的字符串 } </script>随手写一个,不知道对还是不对,自己测试下
不用改代码
多谢!
<script type="text/javascript">
function getPosition(obj){
var result = 0;
if(obj.selectionStart){ //非IE浏览器
result = obj.selectionStart
}else{ //IE
var rng= document.selection.createRange();
rng.moveStart("character",-obj.innerHTML.length);
result = rng.text.length;
}
return result;
}
function getValue(obj){
var pos = getPosition(obj);
var str=obj.innerHTML.substr(pos-1,obj.innerHTML.length);
alert(pos)//这里就是光标后面的字符串
}
</script>随手写一个,不知道对还是不对,自己测试下
你这个难点是怎么得到光标后面的数据,搜索那个还不简单吗?
indexof不就可以搜索比较了吗?
<textarea name="txtBox" rows="7" cols="50" id="txtBox" onclick='GetCursorPsn(this)'>
上段代码是页面搜索代码,我想让他只搜索 input 里的文本,且从光标处以下开始搜索,怎么改,谢谢。
我觉得不如重新写...但我确实要用div,没法用iframe
多谢!
</textarea><br><!--input type="text" value="输入要查询的内容" id="txtFind"-->
<input type="text" value="我" id="txtFind"><input type="button" value="查找下一个" onclick="findText(txtFind.value)"><script language="javascript">
var num = 0;//定义一个全局变量,作为moveStart()函数的偏移量
var blnStart=false;//从光标位置开始标志
var rng = txtBox.createTextRange();function findText(str){
if(str==""){return;} if(document.selection){
if(!blnStart){num = document.selection.createRange().text.length;}//!!!这个是关键
rng.moveStart("character",num);//开始点
rng.moveEnd("character",txtBox.value.length);//结束点都为文尾
blnStart=false;
if(rng.findText(str)){rng.select();}
if(rng.text!=str){
alert("搜索完毕");
rng = txtBox.createTextRange();
}
}
} function GetCursorPsn(o){
//当鼠标点击时,认为从这里开始;找光标位置并更改开始位置标志
blnStart=true;
var slct = document.selection;
var rng = slct.createRange();
o.select();
rng.setEndPoint("StartToStart", slct.createRange());
num = rng.text.length;
rng.collapse(false);
rng.select();
//alert(num )
return num ;
}
</script> IE环境~!