Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > DHTML, JavaScript, VBScript
Перезагрузить страницу Как вместо введенного символа вывести другой
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
p519446 p519446 вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.08.2005
По умолчанию Как вместо введенного символа вывести другой - 04.08.2005, 18:51

Всем привет.

Задача в следующем: мне нужно, чтобы при вводе в текстовое поле (MS IE 6.0), скажем, буковки 'A' (ЛАТИНСК.) _ВМЕСТО_ неё выводилась буковка "Ф" (русск.).
В обработчике onKeyUp я считываю строку, удаляю введенный символ и вместо него подставляю его "русский эквивалент". Но это работает очень медленно и в результате видно, как сначала появляется латинница, а затем на её месте -- "русский эквивалент".
Но главное в том, что если вводить текст быстро (так, что часть символов сидит в буфере клавы), то в текстовом поле НЕ все символы заменяются на русские и часть символов проскакивает как "непереведённые", т.е. латинские.

ВОПРОС: можно ли средствами Javascript'a в браузере IE прочесть символ буфера клавиатуры ПРЕЖДЕ, чем он вылезет в текстовом поле ?
Или по-другому: можно ли как-то заставить IE выводить в текстовом поле не очередной символ, который я ткнул, а тот, который я ему скажу в обработчике ?

Всем ответившим заранее спасибо.
Ответить с цитированием
  (#2 (permalink)) Старый
Boglen Boglen вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.07.2005
По умолчанию 04.08.2005, 21:27

Можно.Подумай логически - мы имеем (хехе) много чего мы имеем.
В данном случае мы имеем поле input и его атрибуты.

итак
<input type=text id="textfield" onKeyPress="">

Вот у него есть такой замечательный метод. Онкейпресс.
Тоесть если ты в этом поле начинаешьт щелкать клавой выполняется то что наисано в методе, затем добавляется текст туда где находится каретка.

Далее нам понадобится Джава.А конкретно из нее - функция перехвата события - нажатие клавишы.

Как я понял получать ту букву клавишу которой ты нажал ты уже умеешь. так вот - пишешь функцию которая получив введенную букву транслирует ее. затем после трансляциии вставляешь туда document.getElementById("field").value += "переменная с буквой";

ну и собсна в поле в методе onKeyPress="функция();return false;"

ретурн нуден для того чтобы ничего в поле кроме нужнного не отображалось
Ответить с цитированием
  (#3 (permalink)) Старый
p519446 p519446 вне форума
Member
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.08.2005
По умолчанию Спасибо, Boglen! Всё заработало! (+) - 05.08.2005, 00:39

subj.
Ответить с цитированием
  (#4 (permalink)) Старый
Boglen Boglen вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.07.2005
По умолчанию 07.08.2005, 12:25

маладца.
Для тех кто не вкурил добавлю еще пару строк к тому что написал.

Перехватить нажатие клавиш на странице можно джавой меток event.keypressed по моему.
Перехватываем нужные нажатия.Для этого нам нужно чтобы фокус каретки был в нужном текстовом поле. У меня нет под рукой пока справочника так что ищите как определить фокус на поле, это легко.
так вот мы схватили нужную клавишу, транслировали ее и забили в value нужного поля. Взятие введенного символа уже из поля и его стерания не есть гуд.
Вуаля.

Рекомендую по данной теме в поиске:
javascript перехват событий метод
http://xlibscripts.land.ru/


Напомню что вызов перехвата должен начинатся с метода OnKeyPress в тэге и этот метод должен заканчиватся ;return false; чтобы предотвратить запись оригинального нажатия.
Ответить с цитированием
  (#5 (permalink)) Старый
buzi buzi вне форума
Member
 
Сообщений: 367
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2004
По умолчанию 08.08.2005, 19:31

2Boglen>> keyPress наступает когда нажатая клавиша отпущена..

2p519446>> вместо onkeypress используй onkeydown.. будет быстрее
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Boglen Boglen вне форума
Member
 
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.07.2005
По умолчанию 14.08.2005, 00:26

txs
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести ленту символов и вывести ее на экран, закрасив каждую букву в другой цвет Niklaus Assembler 0 08.12.2011 03:36
Всегда выдает одно и то же сообщение, независимо от введенного. Feniks701 Вопросы начинающих программистов 3 09.10.2011 14:01
Вместо страницы яндекса отображается другой сайт. виктор67 Любые вопросы от новичков 31 19.04.2011 17:03
Определение количества символов в каждой строке введенного текста на С++ Squirrel Вопросы начинающих программистов 0 26.02.2011 16:07
Выравнивание по правому краю введенного текста, используя функцию WIDE(str,k) Ксюня=) Вопросы начинающих программистов 0 05.12.2010 11:28
Расчитать функцию y(х) в зависимости от введенного параметра А Novichok92 Delphi 1 09.04.2010 11:50
программа проверяющая принадлежность введенного предложения к языку Prolog rang3r Prolog 4 08.04.2010 23:49
Позиция символа videomag Prolog 13 13.04.2009 17:20
Поиск по полному соответствию введенного слова vitalforce PHP 3 13.06.2006 16:51
MatchesMask сравнение по маске как осуществить проверку введенного значения Laime-oz Delphi 1 08.05.2006 17:04
C++ - функция fgets выдаёт 0 вместо первого символа строки Haiku Вопросы начинающих программистов 5 30.01.2005 14:14
Размер текста введенного в в TMemo feedbee Delphi 2 07.06.2004 17:28



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов