Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   В IE не наводиться фокус (https://javascript.ru/forum/css-html-internet-explorer/3524-v-ie-ne-navoditsya-fokus.html)

Mad LIR 29.04.2009 13:54

В 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.
Помогите...

x-yuri 30.04.2009 02:10

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

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

а здесь он уже добавлен к dom (если controls добавлен)
и нету необходимости ни в каких setTimeout
и отдельная функция не нужна, писать вроде немного: edit.focus()
даже проверил в ie 6, ie 7

Mad LIR 30.04.2009 12:16

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

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


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

controls.appendChild( edit );


Но он может быть пока не обработан для вывода и, как мне кажеться, поэтому на него нельзя навести фокус.
Я и спрашиваю какие есть ещё способы идентификации элемента?
Может я ошибаюсь, но тогда объясните в чём причина.

x-yuri 30.04.2009 14:26

<!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>

работает?


Часовой пояс GMT +3, время: 09:17.