javascript光标:用javascript获取textarea中的光标位置

对于写javascript写网页编辑器人来说获取textarea中光标位置是个非常重要问题而往往很多人在这个地方不知所措找不到好办法昨天我在网上找到了段javascript代码本来不想把原版放在这里就是太精彩了怕我给改坏了所以还是原版放在这里吧
var start=0;
var end=0;
function add{
var textBox = document.getElementById("ta");
var pre = textBox.value.substr(0, start);
var post = textBox.value.substr(end);
textBox.value = pre + document.getElementById("inputtext").value + post;
}
function savePos(textBox){
//如果是Firefox(1.5)思路方法很简单
(typeof(textBox.selectionStart) "number"){
start = textBox.selectionStart;
end = textBox.selectionEnd;
}
//下面是IE(6.0)思路方法麻烦得很还要计算上'\n'
(document.selection){
var range = document.selection.createRange;
(range.parentElement.id textBox.id){
// create a selection of the whole textarea
var range_all = document.body.createTextRange;
range_all.moveToElementText(textBox);
//两个range个是已经选择text(range)个是整个textarea(range_all)
//range_all.compareEndPos比较两个端点如果range_all比range更往左(further to the left)则 //返回小于0则range_all往右移直到两个rangestart相同
// calculate selection start po by moving beginning of range_all to beginning of range
for (start=0; range_all.compareEndPos("StartToStart", range) < 0; start)
range_all.moveStart('character', 1);
// get number of line s from textarea start to selection start and add them to start
// 计算下\n
for (var i = 0; i <= start; i ){
(textBox.value.charAt(i) '\n')
start;
}
// create a selection of the whole textarea
var range_all = document.body.createTextRange;
range_all.moveToElementText(textBox);
// calculate selection end po by moving beginning of range_all to end of range
for (end = 0; range_all.compareEndPos('StartToEnd', range) < 0; end )
range_all.moveStart('character', 1);
// get number of line s from textarea start to selection end and add them to end
for (var i = 0; i <= end; i ){
(textBox.value.charAt(i) '\n')
end ;
}
}
}
document.getElementById("start").value = start;
document.getElementById("end").value = end;
}
下面是在页面中js代码思路方法:
<form action="a.cgi">
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td>start: <input type="text" id="start" size="3"/></td>
<td>end: <input type="text" id="end" size="3"/></td>
</tr>
<tr>
<td colspan="2">
<textarea id="ta" _disibledevent="Add Text"/></td>
</tr>
</table>
</form>
此代码原文是:http://blog.csdn.net/liujin4049/archive/2006/09/19/1244065.aspx在此谢过!
这段js代码同时支持IE和Firefox甚是精彩可见此人js功力深厚啊呵呵
Btw:听说Firefox现在市场占有率已经达到17%了而IE8也快出来了浏览器的间又会掀起场你死我活争斗而这种争斗可以使浏览器解析标准会越来越规范标准我们写代码也会越来越省事这实在是件值得高兴
Tags:  javascript获取参数 javascript获取id js获取光标位置 javascript光标

延伸阅读

最新评论

发表评论