|
|
|
| Как получить номер строки поля TEXTAREA, на которой находится курсор, если свойство wrap=off? | |
|
|
|
|
|
|
|
для: guki
(19.02.2007 в 10:36)
| | Посчитать число переносов '\n' до курсора. | |
|
|
|
|
|
|
|
для: 12345
(19.02.2007 в 12:12)
| | Согласен, только с реализацией на javascript у меня проблемы, дайте пожалуйста код. | |
|
|
|
|
|
|
|
для: guki
(19.02.2007 в 10:36)
| | Проблемы решены.
Результатом является скрипт, состоящий из двух функций: caret() - определяет позицию курсора в тексте, а numword() - подсчитывает количество переводов строки до курсора.
Скрипт работает в IE, Firefox и Opera, но возможно разное поведение скрипта при выделении текста.
<HTML>
<HEAD>
<TITLE>Номер строки в тексте</TITLE>
<script type="text/javascript">
function caret() {
var node=document.getElementById("textarea");
if(node.selectionStart) return node.selectionStart;
else if(!document.selection) return 0;
var c = "\001";
var sel = document.selection.createRange();
if (sel.text.length<1) {
var dul = sel.duplicate();
var len = 0;
dul.moveToElementText(node);
sel.text = c;
len = (dul.text.indexOf(c));
sel.moveStart('character',-1);
sel.text = "";
return len;
}
else return "select";
}
function numword() {
var crt=caret();
if (crt!="select") {
var obj=document.all.textarea;
if (crt==-1) crt=obj.value.length;
var h='%0A';
var s=escape(obj.value.substr(0,crt));
var m=3;
var res=0;
var i=4;
while (i <= s.length-1) {
ch=s.substr(i,m);
if (ch==h) {res+=1; i=i+m-1;}
else i++;
}
document.all.result.value=res+1;
}
else document.all.result.value="выделение";
}
</script>
</HEAD>
<BODY>
<FORM>
<textarea id=textarea rows=15 cols=40 wrap=off
onclick=numword()
onkeyup=numword()
onblur="document.all.result.value='не выбрана'">
</textarea>
<hr>
Cтрока №: <input type=text id=result size=12>
<hr>
</FORM>
</BODY>
</HTML>
|
| |
|
|
|