Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Какой event происходит при атозаполнении? (https://javascript.ru/forum/events/13140-kakojj-event-proiskhodit-pri-atozapolnenii.html)

rpz 17.11.2010 13:49

Какой event происходит при атозаполнении?
 
Доброе время суток. Отслеживаю изменения в текстовом инпуте. При вводе с клавиатуры прекрасно работают onKeyUp и\или onChange. Но при вставке текста с помощью автозаполнения мозиллы (ну или других браузеров) эти евенты не происходят. Вопрос в том как отследить это событие.
Заранее спасибо.

monolithed 17.11.2010 17:46

Думаю должно помочь:
<form name="forma">
    <input type="text" />
    <input type="text" readonly />
</form>

<script type="text/javascript">
window.onload = function(){
    var event = ['keyup', 'change'];
    for(i=0; i<event.length; i++){
       document.forms['forma']['on'+event[i]] = function(i){
           this.elements[1].value = this.elements[0].value == '' ? '' : 'то-то и оно Михалыч!';
       };
    }
};
</script>

ksa 17.11.2010 22:10

Цитата:

Сообщение от rpz
как отследить это событие

Меня в своё время вооружили вот таким скриптом...

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
...
<script type='text/javascript'>
$(document).ready(function(){
	var ta = $('#text');
	ta.bind('change focus keyup select',function(){
		// твой код
	});
});
</script>

rpz 22.11.2010 21:57

Хм, спасибо за ответы, но разве оба скрипта не эквививалентны следующему?

<form name="forma">
    <input id ="in1" type="text" />
    <input id="in2" type="text" readonly />
</form>

<script type="text/javascript">
window.onload = function(){
document.getElementById("in1").onchange=f1;  
document.getElementById("in1").onkeyup=f1;
}
function f1()
{
document.getElementById("in2").value=document.getElementById("in1").value== ''?'':"aaaa";
}
</script>


Но так у меня не работает.. Именно при автозаполнении, вставка из буфера и все остальные действия работают. Дело в том что мне надо сделать именно в таком виде иначе много чего переделывать.

Если мой вариант и ваш не эквивалентны прошу объяснить в чем разница.

subzey 22.11.2010 22:11

Кстати, при автозаполнении формы по контрол-энтер в опере вообще не вызывается никаких событий: ни focus, ни change, ни DOMControlValueChanged/input/DOMSubtreeModified.

rpz 22.11.2010 22:28

В том-то и дело. В мозилле похоже тоже..

monolithed 22.11.2010 22:47

Цитата:

Сообщение от subzey
Кстати, при автозаполнении формы по контрол-энтер в опере вообще не вызывается никаких событий: ни focus, ни change, ни DOMControlValueChanged/input/DOMSubtreeModified.

Полгода назад делал один сервис, там я textarea использовал, после из нее в скрытые input передавал полученные значения.

rpz 22.11.2010 23:08

Цитата:

Сообщение от monolithed (Сообщение 80280)
Полгода назад делал один сервис, там я textarea использовал, после из нее в скрытые input передавал полученные значения.

Ты это делал чтобы не включалось автозаполнение или на текстареа работают нужные евенты?

В любом случае мне это не слишком удобно.. У меня проверка синтаксиса в 30+ полях.. Не очень хочется дублировать их всех текстареями и скрытыми инпутами. Я вообще думал что решение в каком-то эвенте связанном с кукизами.. Ведь заполняет браузер из кукизов по идее.

Aetae 22.11.2010 23:22

Ну всегда есть на крайний случай дедовский сеттаймаут и сравнение значения с предыдущим.


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