powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / javascript keypress
16 сообщений из 16, страница 1 из 1
javascript keypress
    #35577381
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обрабатываю событие onkeypress.
Нужно, чтобы после нажатой клавиши еще добавился в текстбокс символ
Например, мне нужно. чтобы первые два символа были буквами, а третий - дефис.
Т.е. нажимаю клавишу, пишется первый символ, снова нажимаю клавишу. пишется символ, а после него дефис. как сделтаь?
...
Рейтинг: 0 / 0
javascript keypress
    #35577427
Краказябл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
именно с онкейпрессом надо копать в этом направлении:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<html>
<head>
<script>
	var i= 0 ;
	function foo(id){
		i++;
		if(i== 3 ){
			document.getElementById(id).value+='-';
		}
	}
</script>
</head>
<body>
<form>
<textarea id='ta' onkeypress="foo('ta')"></textarea>
</form>
</body>

</html>
...
Рейтинг: 0 / 0
javascript keypress
    #35577523
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Краказяблименно с онкейпрессом надо копать в этом направлении:

что это еще за var i=0 и foo(id)? Уберем ненужное:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script>
function foo(obj)
{
	if (obj.value.length ==  2 ) obj.value+='-';
	else if (obj.value.length >  2 )
	{
		//bla-bla-bla
	}
}
</script>
<textarea onkeypress="foo(this)"></textarea>
написать то что угодно можно. Только вот сначала подумать надо - например, как поступать при редактировании текста (типа если я наберу "qw-e" и вдруг решу стереть 'w' - то что должно произойти с дефисом и оставшейся строкой). А там уже можно и обобщенную функцию написать можно, которая берет строку и заданный формат и выдает нечто.
...
Рейтинг: 0 / 0
javascript keypress
    #35578230
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
этот вариант не канает. Тут именно в онкейпрессе, сначала появится дефис, а потом уже тот символ, ПОСЛЕ которого надо ставить дефис.
...
Рейтинг: 0 / 0
javascript keypress
    #35578278
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_dirtyэтот вариант не канает. Тут именно в онкейпрессе, сначала появится дефис, а потом уже тот символ, ПОСЛЕ которого надо ставить дефис.
Ну напиши вместо "2" "3".
...
Рейтинг: 0 / 0
javascript keypress
    #35578304
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
надо сделать так, чтобы после второго символа появился дефис. А по Вашему получится, что дефис появится только тогда, когда ввели третий символ.
...
Рейтинг: 0 / 0
javascript keypress
    #35578383
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_dirtyнадо сделать так, чтобы после второго символа появился дефис. А по Вашему получится, что дефис появится только тогда, когда ввели третий символ.
то есть нужно в onkeypress сделать то, что все остальные делают в onkeyup и не мучаются так... Примерно так будет выглядеть, но за кроссбраузерность я не отвечаю (особенно за Оперу):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<script>
function foo(evt)
{
	var evt = evt || window.event;
	var obj = evt.target || evt.srcElement;
	if (obj.value.length ==  1 ) 
	{
		var ch = String.fromCharCode(evt.keyCode || evt.charCode);
		obj.value += ch + '-';
		if (navigator.appName.indexOf("Microsoft")!=- 1 ) {evt.returnValue = false; }
		else { evt.preventDefault(); }
	}
}
</script>
<textarea onkeypress="foo(event)"></textarea>
...
Рейтинг: 0 / 0
javascript keypress
    #35578414
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion _dirtyнадо сделать так, чтобы после второго символа появился дефис. А по Вашему получится, что дефис появится только тогда, когда ввели третий символ.
то есть нужно в onkeypress сделать то, что все остальные делают в onkeyup и не мучаются так... Примерно так будет выглядеть, но за кроссбраузерность я не отвечаю (особенно за Оперу):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<script>
function foo(evt)
{
	var evt = evt || window.event;
	var obj = evt.target || evt.srcElement;
	if (obj.value.length ==  1 ) 
	{
		var ch = String.fromCharCode(evt.keyCode || evt.charCode);
		obj.value += ch + '-';
		if (navigator.appName.indexOf("Microsoft")!=- 1 ) {evt.returnValue = false; }
		else { evt.preventDefault(); }
	}
}
</script>
<textarea onkeypress="foo(event)"></textarea>


Спасибо, думаю все будет работать. но я решил проблему другим способом. Мой вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<script>
function val(id)
{
    var textbox = document.getElementById(id);
    ....... // смотрим что ввели, какой символпо счету, обрабатываем, а дальше...

    textbox.onkeyup = function ()
        {
           textbox.value += '-'; 
        };
}
 </script>   
<textarea onkeypress="foo(event)"></textarea>

...
Рейтинг: 0 / 0
javascript keypress
    #35578421
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
последнюю строчку конечно же надо подправить:
Код: plaintext
1.
2.
<textarea id='blabla' onkeypress="val(this.id)"></textarea>

...
Рейтинг: 0 / 0
javascript keypress
    #35578432
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, вот так:
Код: plaintext
1.
<textarea id='blabla' onkeypress="val(this.id)"></textarea>
Тогда не нужен будет getElementById .
...
Рейтинг: 0 / 0
javascript keypress
    #35578435
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон
Код: plaintext
1.
<textarea id='blabla' onkeypress="val(this)"></textarea>
...
Рейтинг: 0 / 0
javascript keypress
    #35578437
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSergeАга, вот так:
Код: plaintext
1.
<textarea id='blabla' onkeypress="val(this.id)"></textarea>
Тогда не нужен будет getElementById .
:)
...
Рейтинг: 0 / 0
javascript keypress
    #35578475
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 _dirty : ну убил наповал. То нужен был keypress хоть кровь из носу, а в итоге все дружно запихалось в keyup. Хотя спорить не буду, там наверняка в keypress еще куча очень нужной всякой лигики, которую оттуда никак не убрать и т.д., и т.п.
...
Рейтинг: 0 / 0
javascript keypress
    #35578595
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion2 _dirty : ну убил наповал. То нужен был keypress хоть кровь из носу, а в итоге все дружно запихалось в keyup. Хотя спорить не буду, там наверняка в keypress еще куча очень нужной всякой лигики, которую оттуда никак не убрать и т.д., и т.п.
keypress нужен был для того, чтобы чудесным образом символ на глазах у пользователя не менялся, либо не требуемый символ не стирался. А с keypress все получается красиво, то, что не надо, пользователь даже на миг не увидит.
...
Рейтинг: 0 / 0
javascript keypress
    #35578602
_dirty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 illion: кстати твой последний предложенный вариант красивее и безглючнее, его выбрал :)
...
Рейтинг: 0 / 0
javascript keypress
    #35579296
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_dirty2 illion: кстати твой последний предложенный вариант красивее и безглючнее, его выбрал :)
мда? А я вот тут ради научного интереса в Опере проверила (v9.02) - там курсор в конец строки не перемещается после обработки. Нужно с этим разобраться + внутрь функции поставить условие чтоб не обрабатывала не буквенно-цифровые символы типа backspace, стрелки влево-вправо и т.д. В общем, глюки всегда найдутся.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / javascript keypress
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]