powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) игнорирование управляющих клавиш
7 сообщений из 7, страница 1 из 1
(JS) игнорирование управляющих клавиш
    #33634351
i'm_novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброе время суток!

есть поле input, в котором используется автозаполнение с помощью ajax
функцией Autocompleter.Local библиотеки scriptaculous
выборка значений для автозаполнения берется из БД php-скриптом.
вызов php-скрипта осуществляется событием поля input onkeydown.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<style type="text/css" media="screen">
    .selected { background-color: # 888 ; }
</style>
<p>
     <label for="category">ф какую категорию вы хочите войти:</label>
     <br />
     <input id="category" size="40" onkeydown="autocomplete()" type="text" value=""/>
</p>

Получается такая цепочка: при нажатии клавиши вызывается java-скрипт,
считывающий value поля input. Средствами ajax отправляет в php-скрипт это значение,
Код: plaintext
1.
2.
3.
4.
5.
6.
function autocomplete()
{
      var symb = $F('category');
      var pars = 'symb=' + symb;
      new Ajax.Request('ajax_test.php', {method: 'post', parameters: pars, onComplete: showResponse});
}

по которому php выполняет запрос в БД и получает массив записей,
соответствующих введенному(ым) символу(ам). И отдает этот массив в
Autocompleter.Local , который делает список автозаполнения.
Код: plaintext
1.
2.
3.
4.
5.
6.
function showResponse(originalRequest)
{
//………
//  arr – массив записей из БД
    new Autocompleter.Local('category', 'categories_list', arr, {minChars:  1 , fullSearch: true}); 
}
Код: plaintext
1.
2.
<div class="page_name_auto_complete" id="categories_list" style="display:none;border:1px solid black;background-color:white;">
</div>

после вызова Autocompleter.Local этот div становится видимым.
вот здесь и трабл: для перемещения по списку, кроме крысы, естественно
используется клавиатура, в частности стрелки «вверх» и «вниз». Но на input’e
висит onkeydown, поэтому снова идет вызов скрипта, выборка и т.д. и указатель
опять стоит на первом элементе списка.

внимание, вопрос: как запретить действия стрелок только в поле input, а в диве
id="categories_list" чтоб можно было перемещаться по списку?
...
Рейтинг: 0 / 0
(JS) игнорирование управляющих клавиш
    #33634413
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, так и определяйте, код кнопки, которая была нажата, если это стрелки - то функция не должна отправлять запрос.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(JS) игнорирование управляющих клавиш
    #33634447
i'm_novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как бы да...
получится что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function autocomplete(event)
{
  if (event.keyCode ==  40 ) // "вниз"
  {
      return false;
  }
  else 
  {
       var symb = $F('category');
       var pars = 'symb=' + symb;
       new Ajax.Request('ajax_test.php', {method: 'post', parameters: pars, onComplete: showResponse});
  }	
}

но! остается все по прежнему. более того, список автозаполнения долго на экране
не задерживается, моргнет и все, нет его.
...
Рейтинг: 0 / 0
(JS) игнорирование управляющих клавиш
    #33640508
i'm_novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно ли убрать фокус с поля input?
...
Рейтинг: 0 / 0
(JS) игнорирование управляющих клавиш
    #33640547
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно можно. Либо принудительно сказав, что фокуса нет, либо переместив фокус на другой объект.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(JS) игнорирование управляющих клавиш
    #33640704
i'm_novice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в первом случае, я так понимаю, что-то вроде этого:
Код: plaintext
document.getElementById( "id" ).blur();

а во втором?
...
Рейтинг: 0 / 0
(JS) игнорирование управляющих клавиш
    #33640867
Фотография Robert Tappan Moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
document.getElementById( "<другой элемент>" ).focus();
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) игнорирование управляющих клавиш
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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