Взаимодействие между jquery-tokeninput и плагинами enjoyhint - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть задача разработать некоторые учебники для новых инструментов, добавленных в систему ERP, и после некоторых тестов с некоторыми плагинами jQuery я решил использовать EnjoyHint - я использую вилку, потому что она лучшеобновлены и исправлены некоторые ошибки из исходного кода.

С простыми полями формы, кнопками и элементами HTML все круто настраивать, но у меня возникают проблемы при взаимодействии enjoyhint с плагином jQuery TokenInput , который я использую для динамического поиска в базе данныхи вернуть параметры в виде раскрывающегося списка.

Поскольку плагин tokeninput действует как двухэтапная вставка данных (сначала вы вводите нужные данные, а затем выбираете вариант, который лучше соответствует вашим потребностям в раскрывающемся меню).как список), я понимаю, что для пользователя лучше на первом шаге ввести данные в поле ввода текста / tokeninput, а после AJAX-запроса к базе данных (обратный вызов в само поле tokeninput) показать еще один шаг, чтобы сосредоточитьсяна выбор необходимого варианта.После того, как выбор сделан, будет запущен новый AJAX-запрос, который отобразит DIV и вернет пользовательские данные.

На первом шаге (ввод данных для поиска в базе данных) он работает следующим образом:(tour_init - это имя экземпляра EnjoyHint):

{
    onBeforeStart: function() {
        $('#token-input-input_name').focus();
        $('#token-input-input_name').keydown(function(){
            if($(this).val().length > 9){
                setTimeout(function(){
                    tour_init.trigger('next');
                }, 2000);
            }
        });
    },
    selector: '#token-input-input_name',
    event_type: 'custom',
    description: 'Type your ID number code'
}

Но второй (когда пользователю нужно выбрать опцию в раскрывающемся списке), даже если существует задержка по времени для ожидания выбора пользователя, еслипользователь использует стрелки на клавиатуре для навигации по опциям, время ожидания заканчивается неудачей, и тур переходит по шагам, или даже сам закрывает тур (я также позиционирую выделение прямоугольника с нижним отрицательным значением, чтобы показать опции раскрывающегося меню пользователю):

{        
    selector: '#token-input-input_name',
    description: 'Select your option and confirm with ENTER key',
    event: 'key',
    keyCode: 13,
    bottom: -100,
    right: 2,
    left: -1 
}

Есть ли какой-нибудь способ предотвратить пошаговое продвижение тура, если пользователь нажимает любую клавишу клавиатуры, кроме Enter (keyCode 13)?

Большое спасибо, ребята!

...