Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.07.2010, 03:38
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

положение курсора, input type=text
покритикуйте решение
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

<input id="textbox" type="text" value="">
<a id="link" href="#">link</a>
<div id="debug">
</div>

<script type="text/javascript">
function getCursor( input ){
    if( input.selectionStart != null )
        return input.selectionStart;
    else {
        //input.focus();
        var selection = document.selection.createRange().getBookmark();
        var selection2 = input.createTextRange();
        selection2.moveToBookmark( selection );
        var before = input.createTextRange();
        before.setEndPoint('EndToStart', selection2);
        return before.text.length;
    }
}

var textbox = document.getElementById('textbox');
var link = document.getElementById('link');
link.onclick = textbox.onkeyup = function(){
    echo(getCursor(textbox));
};

function echo( s ){
    var debug = document.getElementById('debug');
    debug.innerHTML += s+'<br>';
}
</script>

</body>
</html>

по-хорошему надо было бы в ie фокус устанавливать на элементе, но по той же причине его надо было бы и вернуть, только как...
Ответить с цитированием
  #2 (permalink)  
Старый 19.07.2010, 04:20
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Для <input> в IE достаточно:
<input type="text" onkeyup="fn(this)">
<script>
function fn(input) {
	var range = input.createTextRange();
	range.setEndPoint("EndToStart", document.selection.createRange());
	alert(range.text.length);
};
</script>

А вот для textarea этот код уже работать не будет (пример с textarea).

Сообщение от x-yuri
по-хорошему надо было бы в ie фокус устанавливать на элементе, но по той же причине его надо было бы и вернуть, только как...
Когда input получает фокус ввода, весь текст в нем становится выделенным, положение каретки не сохраняется в IE. Может быть проверять activeElement, если он не равен input'у, то писать, что положение 0 или дина value.

Последний раз редактировалось Octane, 19.07.2010 в 04:36.
Ответить с цитированием
  #3 (permalink)  
Старый 19.07.2010, 06:04
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Octane
А вот для textarea этот код уже работать не будет
и наоборот, код по ссылке не будет работать с input type=text. Мой вариант работает и с input type=text и c textarea, получается. За исключением того момента, что игнорируются переводы строк. Правда по ссылке эта проблема тоже не решена
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Положение курсора YISHIMITSY Events/DOM/Window 1 23.05.2010 13:14
Изменить положение курсора textarea demi Events/DOM/Window 3 11.03.2009 11:05
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55
Позиция курсора в input type="text" (ie) Кирпич Общие вопросы Javascript 2 21.10.2007 06:44