Можно ли в JavaScript создавать ярлыки с последовательностью, как 123,345 вместо комбо?

Я уже использовал некоторый скрипт для реализации ярлыков на моей веб-странице

но мне было интересно, можно ли связать какую-то комбинацию не синхронно, например Ctrl+X, а скорее как последовательность, набирающую 1..2..3 или любую другую комбинацию для выполнения скрипта...

давайте предположим этот пример:

у вас длинный список с номерами:

Вы можете набрать 3..5...6, чтобы перейти к пункту 356, проходя через пункт 3, затем 35, затем 356.

более или менее, как при вводе при выборе поля выбора

Я надеюсь, что это было ясно, это не легко объяснить...

6 ответов

Решение

Я на самом деле нашел отличный скрипт для регистрации последовательности нажатий клавиш, который

http://boedesign.com/demos/keystrokes/

единственная проблема с этим скриптом в том, что в случае ввода

"мужчина" или "манера", он срабатывает на "человека", потому что это она самая короткая последовательность... этот сценарий может нуждаться в таймере...

Я также думаю, что решение этой проблемы может быть в совершенно другом подходе с использованием сценария автозаполнения в невидимом поле ввода... что вы думаете?

Я думаю, что понимаю ваш вопрос. Это не должно быть слишком сложно. Я бы порекомендовал использовать такую ​​библиотеку, как JQuery, и подписываться на keydown даже в окне браузера. Затем создайте буфер из 5 самых последних нажатых клавиш, после каждого нажатия на клавиатуру проверяйте, соответствуют ли 3 последние нажатые клавиши какой-либо сохраненной последовательности. Вы также можете легко отметить время каждого события нажатия клавиши и потребовать, чтобы все клавиши были нажаты в течение определенного промежутка времени друг для друга, чтобы вызвать ярлык.

Рекомендация: создайте текстовый ввод, затем подключите событие onchange. Когда значение в поле изменится, перейдите к соответствующему месту на странице. Использовать CSS position:fixed чтобы сохранить ввод в нужном месте.

Пример страницы HTML:

<p id="3">
    This is paragraph 3.
</p>
...
<p id="35">
    This is paragraph 35.
</p>
...
<p id="356">
    This is paragraph 356
</p>

Пример HTML для поля навигации:

<div class="navigate">
    <p>Go to: <input type="text" id="navbox" /></p>
</div>

CSS, чтобы поместить его в верхний правый угол экрана:

.navigate {
    position: fixed;
    top: 0px;
    right: 0px;
}

JavaScript для выполнения навигации:

(function(){
    var navbox = document.getElementById("navbox");
    navbox.onchange = function(){
        var value = navbox.value;
        if (document.getElementById(value)) {
            window.location.assign("#" + value);
        }
    };
})();

Надеюсь это поможет!

Да, есть много структур JavaScript, которые позволяют вам это делать. Например, проверьте эту демонстрацию автозаполнения JQuery

Надеюсь, поможет;)

Относительно "сочетаний клавиш": это хороший скрипт, который обрабатывает сочетания клавиш, но НЕ последовательности (модификаторы, такие как CTRL, SHIFT, работают).

Если вы хотите, чтобы последовательность клавиш была обработана как "один ярлык", я думаю, вам нужно написать собственный скрипт. Текущие библиотеки не поддерживают это.

Вам нужно получить все входные данные в течение короткого промежутка времени (сброс после каждого нажатия). Когда таймер заканчивается, вы проверяете последовательность клавиш, которая была введена по вашему списку ярлыков.

Я думаю, что вам может понравиться этот, где 'typeahead' находит место..

http://www.pengoworks.com/workshop/jquery/autocomplete.htm

Другие вопросы по тегам