Автор Тема: Автовыбор текста  (Прочитано 4477 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yourock

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Автовыбор текста
« : 12 Июня 2006, 21:54:30 »
Помогите, пожалуйста, сделать такую фишку:
Есть выпадающий список, где содержаться данные (например, фамилии): ---, иванов, ивушкин, петров, сидоров. По умолчанию выбирается прочерк. Допустим, этот список находится в форме, где много полей... шагаем по ним табом. И вот добрались до фамилий (поле активно).
Как сделать так, чтобы при вводе на клаве "и" появлялась фамилия "Иванов", при дальнейшем вводе "ву" - выбиралась фамилия "Ивушкин". Если нажать на "Backspace", то возвращаемся к "ив" и выбирается первое (в алфавитном порядке) слово "Иванов".
Такая фишка встречается в некоторых программах, а как сделать ее на JS - не знаю...

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Автовыбор текста
« Ответ #1 : 13 Июня 2006, 10:29:42 »
Yourock Нужно для этого select обрабатывать события от клавиатуры onKeyPress, onKeyUp, OnKeyDown, смотреть что за клавиши нажимает пользователь и смотреть есть ли соответствующие значения в элементах списка, если есть, то устанавливать соответствуеющий option для select.

Я тебе примерно описал как это делается, дальше просто нужно сесть и пробовать писать!

Оффлайн Yourock

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Автовыбор текста
« Ответ #2 : 15 Июня 2006, 17:04:58 »
Ну что ж, спасибо. Буду пробовать... Просто я примерно так себе это и представлял, но КАК ИМЕННО обрабатывать этот селект - пока не могу понять...

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Автовыбор текста
« Ответ #3 : 15 Июня 2006, 18:35:39 »
Примерно так:


<select onKeyPress="keypress_handler(event)">
<
option>Иванов</option>
<
option>Петров</option>
<
option>Сидоров</option>
</
select>
<
script language="JavaScript" type="text/javascript">
function 
keypress_handler()
{

/*
Можно просто собирать в какую-то переменную набираемую комбинацию симвлов, если пользователь нажал backspace стирать последний символ.

Набранную последовательность сравнивать при помощи строковых методов с значениями в option, если нашёл в каком-нибудь option, значение которое содержит в себе то, что набрал пользоваитель, то просто для этого select устанавливаешь value = равное этому значению.

Алгоритм примерно такой!

Дальше в любом случае надо пробовать самому!

*/

}
</script>

Оффлайн Yourock

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Автовыбор текста
« Ответ #4 : 15 Июня 2006, 21:47:58 »
Спасибо большое.

Оффлайн Yourock

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Автовыбор текста
« Ответ #5 : 04 Июля 2006, 04:33:03 »
Попробовал сделать предварительную проверку работоспособности части кода, но ничего не получается... В чем может быть косяк???
Вот весь код:








Суть кода - сбор нажимаемых клавиш в массив и последующий вывод, например, какого-нибудь введенного ранее символа...

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Автовыбор текста
« Ответ #6 : 04 Июля 2006, 10:13:29 »
Цитировать
Yourock:
В чем может быть косяк???


Косяк в том что ты считаешь размер масссива до цикла wl = word.length сразу после определения массива, т.е. она у тебя 0, т.е. условие if(wl==3) никогда не выполнится.

Совет: event надо передавать в качестве параметра в функцию TestLetters() иначе это будет работать только в IE, хотя вообще для того чтобы получить код нажатой клавиши в Mozilla, надо использовать свойство which.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28