Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отловить нажатие клавишы TAB 
V
    Опции темы
rang3r
Дата 25.6.2012, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



Всем добрго вечера!
Подскажите пж-та, мне необходимо отловить нажатие клавишы TAB и обработать по своему.
накидал след. ф-ию:
 
Код

function replaceTemplate(event) {
            if (((event.ctrlKey) && ((event.keyCode == 0xA) || (event.keyCode == 0xD))) || (event.keyCode == 9)) {
                var cmd = $('#cmd').val();
                if (cmd == '')
                    return false;
                for (var i = 0; i < templates.length; i++) {
                    if (cmd == templates[i].template) {
                        $("#cmd").val(templates[i].command);
                        var position = templates[i].position;
                        setCursor("cmd", (position == null) ? $("#cmd").val().length : position);
                        event.preventDefault();
                        
                        return true;
                    }
                }
            }
            return false;
        }

Она работает как мне надо в FF(фокус остается на текущем элементе + изменяются данные), а в Chrome не хочет, фокус переноситься на другой элемент страничцы, даынные не изменяются.
Сама разметка:
Код

<body style="background: #000000; color: #7CFC00;" OnLoad="document.getElementById('cmd').focus();">
<div style="height: 100%">
    <div id="out" style="height: 100%">

    </div>
    <div style='color: red;'></div>
    <div id="in">
        <label for="cmd">&gt</label>
        <input type="text" name="cmd" value="" id="cmd" title="cmd"
               style="width:90%; background: #000000; color: #7CFC00; border-style: none;"
               onkeypress="processCmd(event)" onkeydown="return cachedCmd(event);" />
    </div>
</div>
</body>

PM MAIL Skype   Вверх
skyboy
Дата 25.6.2012, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



событие onblur вызывается при потере фокуса элементом.
ТАВ по умолчанию приводит к переключению фокуса ввода…
PM MAIL   Вверх
Aliance
Дата 26.6.2012, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Сайт http://jsfiddle.net/ отлавливает нажатие tab и работает это в т.ч. в Хроме. Смотрите исходники, как сделано у них.
PM MAIL WWW ICQ Skype   Вверх
rang3r
Дата 28.6.2012, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



Цитата(skyboy @ 25.6.2012,  22:51)
событие onblur вызывается при потере фокуса элементом.
ТАВ по умолчанию приводит к переключению фокуса ввода…

Добавил в input : onblur = "return replaceTemplate(event);"
Ничего не изменилось в хроме, к сожалению

Добавлено через 26 секунд
Цитата(Aliance @ 26.6.2012,  09:56)
Сайт http://jsfiddle.net/ отлавливает нажатие tab и работает это в т.ч. в Хроме. Смотрите исходники, как сделано у них.

Ушел смотреть исходники сайта

Добавлено через 14 минут и 38 секунд
Там сделано все достаточно просто:
Код

else if (code == 9 && this.options.tabMode != "default" && !event.ctrlKey) { // tab
        this.handleTab(!event.shiftKey);
        event.stop();
      }

handleTab: function(direction) {
      if (this.options.tabMode == "spaces")
        select.insertTabAtCursor(this.win);
      else
        this.reindentSelection(direction);
    }

Я только вставил enent.stop() и все равно в Хроме метод replaceTemplates() даже не вызывается при нажатии на Tab(поставил брейкпоинт)
PM MAIL Skype   Вверх
rang3r
Дата 28.6.2012, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 2.4.2009

Репутация: нет
Всего: нет



Ура!!!!
Оказывается Хром в такой ситуации работает только на keydown.
Вопрос закрыт. Всем спасибо!
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1130 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.