Замена нажатой клавиши другой
Здравствуйте!
Не могу понять как мне сделать замену кода нажатой клавиши другой. То есть мне нужно по нажатию одной клавиши вводить другие символы. Например, в текстовое поле можно вводить определенные символы, а другие заменять нулем. Короче говоря, нажимается одна буква, а в поле попадает другая. У меня на текстовом поле событие 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 Как мне сделать правильно, чтобы работало? |
<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> |
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; } } Но если вводить символы не в начало строки, то они добавляются в конец. |
Вы под каким браузером смотрите?
|
exec, по-моему, в реализации скрипта и не предполагается, что новый символ будет вставлен в текущую позицию.
this.value += 'x';, или я не прав? |
Да, точно. Нужно вычислять позицию курсора и вставлять туда.
|
можно попробовать реагировать на два события (keyDown и KeyUp). В первом случае, ввыод еще не произошел, а во втором произошел. Сравнивая результаты, можно узнать позицию и заменить значение поля ввода на нужное, изменив символ на нужном месте...
|
Файрфокс браузер.
Можно конечно сделать типа onkeyup="this.value = this.value.replace(/1/g, '0')" но тут видно какой символ ввели и только потом заменяется на нужный. |
Часовой пояс GMT +3, время: 22:35. |