Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2010, 00:12
Новичок на форуме
Отправить личное сообщение для sergiyko Посмотреть профиль Найти все сообщения от sergiyko
 
Регистрация: 07.07.2010
Сообщений: 5

Замена нажатой клавиши другой
Здравствуйте!
Не могу понять как мне сделать замену кода нажатой клавиши другой. То есть мне нужно по нажатию одной клавиши вводить другие символы. Например, в текстовое поле можно вводить определенные символы, а другие заменять нулем. Короче говоря, нажимается одна буква, а в поле попадает другая.
У меня на текстовом поле событие
function setc(e) {
var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode);
alert(key);
}
<input id="mytext" onkeypress="return setc(event);" type="text" value="">

Надо заменять на ходу, до попадания символа в поле. Я пробовал менять код клавиши так: e.charCode = 48; но пишет что нельзя менять setting a property that has only a getter
Как мне сделать правильно, чтобы работало?
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2010, 07:03
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

<textarea id="txt"></textarea>
<script type="text/javascript">
	document.getElementById('txt').onkeypress = function (e) {
		e = e || window.event;
		if (e.keyCode == 97) {
			this.value += 'x';
			e.preventDefault ? e.preventDefault() : e.returnValue = false;
		}
	}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2010, 11:20
Новичок на форуме
Отправить личное сообщение для sergiyko Посмотреть профиль Найти все сообщения от sergiyko
 
Регистрация: 07.07.2010
Сообщений: 5

exec,
У меня ваш код не работает. Работает так:
document.getElementById('txt').onkeypress = function (e) {
		e = e || window.event;
		key = (typeof  e.charCode == 'undefined' ? e.keyCode : e.charCode);
		alert(key);
		if (key == 49) {
			this.value += 'x';
			e.preventDefault ? e.preventDefault() : e.returnValue = false;
		}
	}

Но если вводить символы не в начало строки, то они добавляются в конец.
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2010, 11:29
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Вы под каким браузером смотрите?
Ответить с цитированием
  #5 (permalink)  
Старый 08.07.2010, 12:28
Аспирант
Отправить личное сообщение для pandasensey Посмотреть профиль Найти все сообщения от pandasensey
 
Регистрация: 24.02.2010
Сообщений: 55

exec, по-моему, в реализации скрипта и не предполагается, что новый символ будет вставлен в текущую позицию.
this.value += 'x';
, или я не прав?
Ответить с цитированием
  #6 (permalink)  
Старый 08.07.2010, 12:39
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Да, точно. Нужно вычислять позицию курсора и вставлять туда.
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2010, 14:10
Аспирант
Отправить личное сообщение для pandasensey Посмотреть профиль Найти все сообщения от pandasensey
 
Регистрация: 24.02.2010
Сообщений: 55

можно попробовать реагировать на два события (keyDown и KeyUp). В первом случае, ввыод еще не произошел, а во втором произошел. Сравнивая результаты, можно узнать позицию и заменить значение поля ввода на нужное, изменив символ на нужном месте...
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2010, 14:14
Новичок на форуме
Отправить личное сообщение для sergiyko Посмотреть профиль Найти все сообщения от sergiyko
 
Регистрация: 07.07.2010
Сообщений: 5

Файрфокс браузер.
Можно конечно сделать типа
onkeyup="this.value = this.value.replace(/1/g, '0')"

но тут видно какой символ ввели и только потом заменяется на нужный.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клавиши F1, F3, F5 в IE Sanches2009 Internet Explorer 18 26.05.2009 11:29
кроссбраузерно получить код нажатой клавиши sddld Общие вопросы Javascript 5 04.03.2009 10:58