Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2009, 13:54
Интересующийся
Отправить личное сообщение для Mad LIR Посмотреть профиль Найти все сообщения от Mad LIR
 
Регистрация: 29.04.2009
Сообщений: 12

В IE не наводиться фокус
Такая проблема. Есть вот что:

addOtherInput = function()
{
    var controls = _el( '_id_modelContainer' );
    if (_el( 'gisReg[vehicle][model]' ))
    if (_el( 'gisReg[vehicle][model]' ).value == 'other')
    {   
        if (!_el( 'other_model' ))
        {
            var edit         = document.createElement('input');
            ................
            параметры edit
            ...............
            controls.appendChild( edit );
            if (edit.offsetHeight != 0) { setFocus(); } // здесь2
        }
    } 
}

setFocus = function()
{
    var edit = _el( 'other_model' );
    if ( edit ) // здесь1
    {
        //alert('sdfghvfg');
        edit.focus();
        //return;
    } else setTimeout('setFocus()',100);
}


В месте // здесь1 - нужно каким-то образом определить что edit - уже создался.
При включении алерта - появляеться пауза и фокус срабатывает, без него в IE нет.
Ежели задать в месте // здесь2 setTimeout('setFocus()', 400); достаточную паузу - также срабатывает.
Так понимаю что нужно как-то проидентифицировать edit.
Помогите...
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2009, 02:10
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

var edit         = document.createElement('input');

здесь input уже создался
controls.appendChild( edit );

а здесь он уже добавлен к dom (если controls добавлен)
и нету необходимости ни в каких setTimeout
и отдельная функция не нужна, писать вроде немного: edit.focus()
даже проверил в ie 6, ie 7
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2009, 12:16
Интересующийся
Отправить личное сообщение для Mad LIR Посмотреть профиль Найти все сообщения от Mad LIR
 
Регистрация: 29.04.2009
Сообщений: 12

addOtherInput - эта функция вызываеться при AJAX запросе.
И у меня работает только при задании достаточной паузы.
Элемент может создаться:

var edit         = document.createElement('input');


Он может добавиться:

controls.appendChild( edit );


Но он может быть пока не обработан для вывода и, как мне кажеться, поэтому на него нельзя навести фокус.
Я и спрашиваю какие есть ещё способы идентификации элемента?
Может я ошибаюсь, но тогда объясните в чём причина.
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2009, 14:26
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
	<title>title</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
window.onload = function() {
	var input = document.createElement('input');
	document.body.appendChild( input );
	input.focus();
}
</script>
</head>
<body>
<input type="text" value="12">
</body>
</html>

работает?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать фокус с селекта в IE6? Shurik_ Общие вопросы Javascript 2 05.11.2008 17:14
Как передать фокус флешке на странице? dArky Общие вопросы Javascript 3 10.08.2008 01:03