Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка ввода в поле INPUT типа Text (https://javascript.ru/forum/events/6637-obrabotka-vvoda-v-pole-input-tipa-text.html)

motl 10.12.2009 22:32

Обработка ввода в поле INPUT типа Text
 
Подскажите, как делается обработка ввода в поле INPUT типа Text?
onChange не подходит, потому что нужна обработка содержание в момент ввода, а не после перемещения фокуса с поля.
Например на Яндексе как-то это дело обрабатывается, когда они список подходящих слов выводят.

subzey 10.12.2009 23:53

http://codeshit.com/post416
Посмотрите тут.

Gozar 11.12.2009 08:46

<input type="text" onkeyup="alert(this.value)">

subzey 11.12.2009 09:27

Gozar,
пользователь же может и драг-н-дропом текст перетащить.
Нужно проверять именно DOMControlValueChange и его аналоги.

Gozar 11.12.2009 10:07

subzey,
Цитата:

Нужно проверять именно DOMControlValueChange и его аналоги.
совсем не обязательно, можно еще по таймеру проверять содержимое value

B~Vladi 11.12.2009 10:51

Цитата:

Сообщение от subzey
Нужно проверять именно DOMControlValueChange и его аналоги.

И какие у него аналоги?!

subzey 11.12.2009 12:55

  • DOMControlValueChanged — опера
  • input — XUL (гекконы)
  • propertychange (где property="value") — ослик
  • DOMCharacterDataModified, DOMSubtreeModified — вебкит
Все это расписано в статье по ссылке выше.

motl 11.12.2009 13:16

subzey,
Спасибо, мне под IE нужно было, а это onPropertychange
Вот тут ещё: http://webpeppers.ru/33.html

glutton 16.10.2010 23:16

FireFox event.KeyCode и event.which
 
Здравствуйте! Есть код:

<input type="hidden" id="tarif_obl" value="20">
<input id="input_km" type=TEXT  value="2" onFocus="this.select();" onKeyUp="ChangeOnFly();" name=km> введите километры
<div>200р. + <span id="dostavka">20</span>р.</div>


Во всех браузерах прекрасно работает эта функция:

function ChangeOnFly()
{
	var km = document.getElementById('input_km').value;
	km = km-0;
	
	var tarif = document.getElementById('tarif_obl').value;
	tarif = tarif-0;

	document.getElementById('dostavka').firstChild.nodeValue = km*tarif;
}


А вот такая функция не работает в FireFox3 (значение при вводе не меняется):

function ChangeOnFly()
{
	var km = document.getElementById('input_km').value;
	km = km-0;
	
	var tarif = document.getElementById('tarif_obl').value;
	tarif = tarif-0;

	var keycode; // для firefox и остальных браузеров !!!
	if (!event) var event = window.event;
	if (event.keyCode) keycode = event.keyCode;
	else if (event.which) keycode = event.which;
	
	// только цифры на основной клаве и цифровой, Backspase и Delete
	if ( ((event.keyCode>=48) && (event.keyCode<=57)) || ((event.keyCode>=96) && (event.keyCode<=105)) || (event.keyCode==8) || (event.keyCode==46) )	 {
		document.getElementById('dostavka').firstChild.nodeValue = km*tarif;
	}
	else {
			event.returnValue=false;		
	}
}

Где ошибка?? (Необходимо ограничить ввод иных символов кроме цифр на основной клаве и цифровой, Backspase и Delete)
Спасибо!

monolithed 16.10.2010 23:34

<script type="text/javascript">
window.onload = function(){
      document.getElementById('input').onkeyup = function(){
            this.value = this.value.replace(/[^\d]/g,'');
      };
};
</script>
<input type="text" id="input" />

glutton 17.10.2010 01:04

спасибо! а подскажите, как разрешить ещё стрелки вправо/влево?

monolithed 17.10.2010 01:29

они так разрешены, смотрите мой пример

glutton 17.10.2010 01:32

да, точно, виноват.. а что-то сначала не получилось у меня..

Вот, понял - в IE8 не даёт стрелочками передвигаться.. и в Crome

monolithed 17.10.2010 11:14

Цитата:

Сообщение от glutton
Вот, понял - в IE8 не даёт стрелочками передвигаться.. и в Crome

Со стрелками действительно бывают проблемы даже при использовании Event


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