Подтвердить что ты не робот

Получить выбранные значения элементов для Bootstrap typeahead

Bootstrap просто реализовал аккуратную функцию автозаполнения, называемую typeahead. У меня возникают проблемы с получением соответствующего значения для ввода текста.

Например, у меня может быть следующее:

$('input').on('change', function(){
    console.log($(this).val());
});

Это не означает, что вы выбрали выбранное значение. Кто-нибудь знает, как получить выбранное значение с помощью typeahead с помощью Bootstrap?

4b9b3361

Ответ 1

$('#autocomplete').on('typeahead:selected', function (e, datum) {
    console.log(datum);
});
$('#autocomplete').on('typeahead:cursorchanged', function (e, datum) {
    console.log(datum);
});

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

ОБНОВИТЬ

Имя события было изменено на typeahead:select в более поздних версиях.

Ответ 2

Вы смотрите на него с неправильного угла. Метод bootstrap typeahead предоставляет опцию, которая позволяет передать функцию обратного вызова, которая принимает выбранное значение в качестве аргумента. Ниже приведен сжатый пример, иллюстрирующий только этот один аргумент.

$('#typeaheadID').typeahead({
    updater: function(selection){
        console.log("You selected: " + selection)
    }
})

ура! справочная информация

Ответ 3

Я работаю с этим, и сейчас у меня такая же проблема. Я планирую решить эту проблему с помощью этой красивой вилки

https://gist.github.com/1891669

И я сделал это с обратным вызовом:

  $('.typeahead').typeahead({
    // note that "value" is the default setting for the property option
    source: [{value: 'Charlie'}, {value: 'Gudbergur'}, ...],
    onselect: function(obj) { console.log(obj) }
  })

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

Ответ 4

Если у вас только 1 на странице, вы можете попробовать $('ul.typeahead li.active').data('value');, но у вас могут быть проблемы, если на странице больше 1.

Интересно, есть ли причина, по которой входное значение не задано?

Ответ 5

$('#myselector').typeahead({
itemSelected:function(data,value,text){
   console.log(data)
    alert('value is'+value);
    alert('text is'+text);
},
//your other stuffs
});

Вам нужно просто передать itemSelected в функции обратного вызова, и он предоставит вам выбранный элемент.

Надеюсь, это сработает для вас.

Ответ 6

Если вы используете другую кнопку для работы с выбранным элементом или хотите получить этот элемент сразу после обновления, вы можете использовать $("#your_input").next("ul").find("li.active").data("value"); для получения значения.

Работа для ajax bootstrap typeahead.