您的位置:首页 > Web前端 > JavaScript

javascript獲取textare光標位置顯示div,及插入内容(IE ,FIREFOX)

2009-05-31 11:21 330 查看
這個是查了很多資料自己總結出來的,還有一些不足,希望高手可以給以指導,謝謝!

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>无标题文档</title>
<mce:script type="text/javascript"><!--
var objRange = null;
function keydown(myEvent){
var  m=document.getElementById("ctl00_ContentTripMaster_divSign");
var cursorTop = 0;
var cursorLeft = 0;
if(myEvent.ctrlKey && myEvent.keyCode == 188){
if(window.getSelection){
var arrPos = getposion();
var obj = document.getElementById("ctl00_ContentTripMaster_txtText");
if (obj.selectionStart != undefined && obj.selectionEnd != undefined){
var subtxt = obj.value.substr(0,obj.selectionEnd);
var start  = subtxt.lastIndexOf("/n");
if (start == -1 )
start =0;
var end = getLength(subtxt.substr(start,obj.selectionEnd));
var count = getEnterNum(subtxt);
cursorTop  =   parseInt(arrPos[0] ,10) + (count+1)*15;
cursorLeft =   parseInt(arrPos[1],10) + end*8;
}
}else{
objRange   =  document.selection.createRange();
cursorTop  =   parseInt(objRange.offsetTop,10) + 5;
cursorLeft =   parseInt(objRange.offsetLeft,10) + 10;
}
m.style.left = cursorLeft  + "px";
m.style.top = cursorTop +"px";
m.style.display = '';
}
else{
m.style.display = "none"
}
}
function getposion() {
var txtobj = document.getElementById("ctl00_ContentTripMaster_txtText");
var   pos   =   new   Array();
var   t=txtobj.offsetTop;
var   l=txtobj.offsetLeft;
while(txtobj=txtobj.offsetParent){
t+=txtobj.offsetTop;
l+=txtobj.offsetLeft;
}
pos[0] = t;
pos[1] = l;
return pos;}
function getLength(str){
var len = 0;
for(var i=0;;i++){
if(!str.charCodeAt(i))
break;
if(str.charCodeAt(i)>255)
len += 2;
else
len +=1;
}
return len;
}
function getEnterNum(str){var count =0;
for (var i = 0;i < str.length;i++){
if(str.charAt(i) == "/n"){
count = count +1;
}
}
return count;
}
function listSelect(){var objlist = document.getElementById("ctl00_ContentTripMaster_lstBox");
var objtxt = document.getElementById("ctl00_ContentTripMaster_txtText");
var objdiv = document.getElementById("ctl00_ContentTripMaster_divSign");
if(window.getSelection){
if (objtxt.selectionStart != undefined && objtxt.selectionEnd != undefined){
var txtBef = objtxt.value.substr(0,objtxt.selectionEnd);
var txtAft =objtxt.value.substr(objtxt.selectionEnd);
objtxt.value = txtBef + objlist.options[objlist.selectedIndex].text + txtAft ;
}
}
else
objRange.text = objlist.options[objlist.selectedIndex].text;
objdiv.style.display = "none";
objtxt.focus();
}
// --></mce:script>
</head>
<body>
<div style="margin-top: 0px; float: left; width: 100px;">
<span id="ctl00_ContentTripMaster_Label8" >本文</span>
</div>
<div style="margin-top: 0px; float: left; width: 440px;">
<textarea name="ctl00$ContentTripMaster$txtText" rows="2" cols="20" id="ctl00_ContentTripMaster_txtText" onkeydown="keydown(event);" style="font-size:10pt;height:200px;width:430px;">


$F
$T
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: