Javascript Textareaのカーソル位置を設定して取得する方法
4277 ワード
JS Textarea
var isIE = !(!document.all);
function posCursor(){
var start=0,end=0;
var oTextarea = document.getElementById("textarea");
if(isIE){
//selection , , / 。
//createRange TextRange ,
// controlRange 。
var sTextRange= document.selection.createRange();
// textarea
if(sTextRange.parentElement()== oTextarea){
// TextRange
var oTextRange = document.body.createTextRange();
// 。
oTextRange.moveToElementText(oTextarea);
// TextRange
//oTextRange (textarea) TextRange
//sTextRange TextRange
//compareEndPoints ,compareEndPoints TextRange
//StartToEnd TextRange TextRange 。
//StartToStart TextRange TextRange 。
//EndToStart TextRange TextRange 。
//EndToEnd TextRange TextRange 。
//moveStart ,
//character
//word
//sentence
//textedit
// oTextRange sTextRange ,
for (start=0; oTextRange.compareEndPoints("StartToStart", sTextRange) < 0; start++){
oTextRange.moveStart('character', 1);
}
//
(
, )
for (var i = 0; i <= start; i ++){
if (oTextarea.value.charAt(i) == '
'){
start++;
}
}
//
oTextRange.moveToElementText(oTextarea);
for (end = 0; oTextRange.compareEndPoints('StartToEnd', sTextRange) < 0; end ++){
oTextRange.moveStart('character', 1);
}
for (var i = 0; i <= end; i ++){
if (oTextarea.value.charAt(i) == '
'){
end++;
}
}
}
}else{
start = oTextarea.selectionStart;
end = oTextarea.selectionEnd;
}
document.getElementById("start").value = start;
document.getElementById("end").value = end;
}
function moveCursor(){
var oTextarea = document.getElementById("textarea");
var start = parseInt(document.getElementById("start").value);
var end = parseInt(document.getElementById("end").value);
if(isNaN(start)||isNaN(end)){
alert(" ");
}
if(isIE){
var oTextRange = oTextarea.createTextRange();
var LStart = start;
var LEnd = end;
var start = 0;
var end = 0;
var value = oTextarea.value;
for(var i=0; i<value.length && i<LStart; i++){
var c = value.charAt(i);
if(c!='
'){
start++;
}
}
for(var i=value.length-1; i>=LEnd && i>=0; i--){
var c = value.charAt(i);
if(c!='
'){
end++;
}
}
oTextRange.moveStart('character', start);
oTextRange.moveEnd('character', -end);
//oTextRange.collapse(true);
oTextRange.select();
oTextarea.focus();
}else{
oTextarea.select();
oTextarea.selectionStart=start;
oTextarea.selectionEnd=end;
}
}
start:
end: