Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Оставить фокус в поле (https://javascript.ru/forum/misc/3958-ostavit-fokus-v-pole.html)

Andrej_2 09.06.2009 13:23

Оставить фокус в поле
 
Есть динамически создаваемое текстовое поле, его изменение отлавливается через onpropertychange, но фокус теряется. Нужно дать команду после обработки вернуть фокус в это поле, чтобы продолжать изменения.

Делаю так:

<input type=text name="aga" value="изменяем" onpropertychange="raz('a','b','c'),this.forms.aga.focus();">


Не получается. Как правильнее?

Octane 09.06.2009 20:19

onpropertychange только для IE. Где изменяете значение поля, там же и возвращайте ему фокус ввода.

Andrej_2 13.06.2009 14:08

Спасибо!
Мне только для ИЕ и надо (это для CMS).
Нифига не получается, что только не делаю. Неужели это баг ИЕ?

Вот для отладки создал проблемный участок:

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</HEAD>
<BODY>




<script>


function obrabotka(tshto_redaktirovat,tshto_obrabotat,znatsenie)
{

	var vstavka = '';

	vstavka+= '<input type=text ';

	vstavka+='name=\"';
	vstavka+='' + tshto_redaktirovat + '_' + tshto_obrabotat + '';
	vstavka+='\" ';

	vstavka+='id=\"';
	vstavka+='vnutri_' + tshto_redaktirovat + '_' + tshto_obrabotat + '';
	vstavka+='\" ';

	vstavka+='value=\"';
	vstavka+='' + znatsenie + '';
	vstavka+='\" ';
	
	vstavka+='onpropertychange=\"obrabotka(\'' + tshto_redaktirovat + '\',\'' + tshto_obrabotat + '\',value)\">';

document.getElementById('pokaz_' + tshto_redaktirovat + '_' + tshto_obrabotat).innerHTML=znatsenie;//--показываю, что изменяю

document.getElementById('' + tshto_redaktirovat + '_' + tshto_obrabotat).innerHTML=vstavka;//--заменяю поле

document.getElementById('vnutri_' + tshto_redaktirovat + '_' + tshto_obrabotat).focus();//--пробую ставить фокус па id поля

//document.forms.ugu('' + tshto_redaktirovat + '_' + tshto_obrabotat).focus();//--пробую ставить фокус через имя поля

}


</script>







<form name="ugu">

<span id=pokaz_pervoe_pole></span>
<br>
<span id=pervoe_pole><u onclick="obrabotka('pervoe','pole','текст1')">Изменить первое поле</u></span>
<br><br>
<hr>
<br><br>
<span id=pokaz_vtoroe_pole></span>
<br>
<span id=vtoroe_pole><u onclick="obrabotka('vtoroe','pole','текст2')">Изменить второе поле</u></span>


</form>
</BODY>
</HTML>


Что интересно, если, скажем, focus() заменяю на select(), то выделяет правильно. Значит, остальное в принципе верно. Если заменяю onpropertychange на onchange, то работает, но не так, как мне надо. Мне надо именно менять в режиме реального времени. Может, можно как-то эмулировать onpropertychange по-другому?

ZoNT 15.06.2009 12:18

Цитата:

Сообщение от Andrej_2
<input type=text name="aga" value="изменяем" onpropertychange="raz('a','b','c'),this.forms.aga. focus();">

<input type=text name="aga" value="изменяем" onpropertychange="raz('a','b','c');this.focus();">

Andrej_2 15.06.2009 13:15

Спасибо! Я, кажется, уже все перепробовал -- не помогает. Склоняюсь к мнению, что это баг ИЕ.


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