Twitter TypeAhead - предложения MouseOver помещают предложение в input.tt-query

В стандартном Twitter TypeAhead у меня следующее поведение:

Когда пользователь начинает вводить текст, появляются предложения, а когда он нажимает клавишу «Ввод», он перенаправляется на страницу подробного поиска, где введенный текст используется в качестве параметра URL-адреса? Query = [text]. Это как и ожидалось, и все в порядке.

Когда пользователь наводит указатель мыши на предложение до того, как он нажимает ввод, он автоматически помещает заголовок этого предложения в tt-query-input (не отображается), а при нажатии ввода поисковым запросом является заголовок предложения, а не то, что он напечатал. Как я могу избежать такого поведения?

Я добавил этот код для перенаправления при нажатии клавиши ввода (где txtQuery - это идентификатор, который я добавил в класс typeahead tt-query:

   $('#txtQuery').bind("enterKey", function (e) {
         var url = '/?query=' + $('#txtQuery').val();
         window.location.href = url;
     });
     $('#txtQuery').keyup(function (e) {
         if (e.keyCode == 13) {
             $(this).trigger("enterKey");
         }
     });

person flygge    schedule 04.03.2014    source источник
comment
Я не уверен, что это стандартное поведение tt. Что ты пробовал? Код?   -  person frhd    schedule 04.03.2014
comment
Я добавил код, который перенаправляет при нажатии клавиши ввода. все остальное стандартная версия tt 0.9.3   -  person flygge    schedule 04.03.2014
comment
При вводе вперед нажатие Enter должно выбрать значение под курсором и также вызвать событие enterKey. Мне это кажется нормальным с точки зрения удобства использования - я вижу, что было предложено, и нажимаю Enter, чтобы в поле ввода сохранялось то, что находится под курсором. Интересно, что вы думаете, зачем это менять.   -  person frhd    schedule 04.03.2014
comment
Это именно то, чего я хочу избежать. Нажатие клавиши ВВОД, когда указатель мыши находится (или находился) над предложением, не должно помещать этот предложенный заголовок во ввод. Предложения представляют собой ссылки на страницы, нажатие на которые приведет пользователя туда. когда эти предложения не то, что ищет пользователь, ввод должен привести его к более подробной странице с введенным поисковым запросом.   -  person flygge    schedule 04.03.2014


Ответы (1)


Видимо, при наведении курсора на предложения происходит что-то неожиданное. По какой-то причине при наведении курсора изменится ваше значение во входной DOM. Вы можете попробовать предотвратить действия, выполняемые с событием, например:

$('.twitter-typeahead').on('mouseover', '.tt-suggestion', function(event){
  event.preventDefault();
  // verify input
  console.log($('#txtQuery').val());
});

РЕДАКТИРОВАТЬ:

Таким же образом вы можете «отвязать» события нажатия клавиши от элементов '.tt-offer', чтобы предотвратить выбор и отправку enter.

HTH

person frhd    schedule 04.03.2014
comment
Я действительно не мог избежать этого набора tt - как только указатель мыши был над предложением - предложением в элементе span, который добавляется после input.tt-query. Используя событие наведения мыши, я помещаю пользовательский запрос в скрытый ввод и использую его при перенаправлении. не очень елегенат, но пока работает .. - person flygge; 05.03.2014