Можно ли в JavaScript создавать ярлыки с последовательностью, как 123,345 вместо комбо? - PullRequest
0 голосов
/ 17 мая 2010

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

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

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

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

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

более или менее похоже на то, как вы печатаете при выборе поля выбора

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

Ответы [ 6 ]

1 голос
/ 19 мая 2010

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

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

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

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

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

1 голос
/ 18 мая 2010

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

1 голос
/ 17 мая 2010

Рекомендация: создайте текстовый ввод, затем подключите событие 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);
        }
    };
})();

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

0 голосов
/ 17 мая 2010

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

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

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

0 голосов
/ 17 мая 2010

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

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

0 голосов
/ 17 мая 2010

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

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

...