テキストエリアのカーソル位置を取得する


先頭からの文字数取得

var getNowP = function(target){
	var pos = 0;
	try{
		if(Prototype.Browser.IE){
			document.getElementById(target).focus();
			var s = document.selection.createRange();
			var r = document.getElementById(target).createTextRange();
			var total = r.text.replace(/\r/g, "").length;
			r.moveToPoint(s.offsetLeft, s.offsetTop);
			r.moveEnd("textedit");
			pos = total - r.text.replace(/\r/g,"").length;
		}else{
			pos =  document.getElementById(target).selectionStart;
		}
	}catch(err){}
	return pos;
}


r.text.replace(/\r/g,"")しとかないと正しい文字数にならない
あと、先頭からカーソル、末尾からカーソルまでの間に改行しか存在しない場合IEだと正しくカウントできない



現在行を取得

var getNowLine = function(target){
	var pos = getNowP(target);
	var	str = j$("#" + target).val().substr(0, pos);
	return str.split("\n").length;
}


改行絡みはブラウザごとにまちまちな感じなのでこの辺もまじめにやろうとすると大変そうだ