В 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. Помогите... |
var edit = document.createElement('input'); здесь input уже создался controls.appendChild( edit ); а здесь он уже добавлен к dom (если controls добавлен) и нету необходимости ни в каких setTimeout и отдельная функция не нужна, писать вроде немного: edit.focus() даже проверил в ie 6, ie 7 |
addOtherInput - эта функция вызываеться при AJAX запросе.
И у меня работает только при задании достаточной паузы. Элемент может создаться: var edit = document.createElement('input'); Он может добавиться: controls.appendChild( edit ); Но он может быть пока не обработан для вывода и, как мне кажеться, поэтому на него нельзя навести фокус. Я и спрашиваю какие есть ещё способы идентификации элемента? Может я ошибаюсь, но тогда объясните в чём причина. |
<!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. |