2016-02-13 2 views
0

Я использую метод typeahead.js typeahead в нескольких входах, и мне нужно добавить выбранное значение к скрытому входу рядом с текущим входом.

var $input = $('.typeahead'); 
$input.typeahead({ 
    ... 
    afterSelect: function (item) { 
     $(this).next('.input-hidden').val(item.id); 
    } 
}); 

Но $(this) не работает в этом случае.

Я создал пример: https://jsfiddle.net/hvwy6a5n/

+2

Вы можете проверить, что 'this' указывает на. Кроме того, если возможно, поделитесь примером как «JSFiddle» или «CodePen» – Rajesh

+0

. Что о хранении $ input объекта во всем мире и user $ input.next() вместо $ (this) .next()? – Piotrek

+0

предупреждение ($ input) не определено? –

ответ

1

Вы можете попробовать что-то вроде этого: Updated Fiddle.

Примечание, .next() не будет работать. Typeahead изменяет вашу структуру DOM, и вам нужно будет перемещаться соответственно.

  • this представляет Typeahead
  • this.$element.context это даст вам ваш текущий вход.

Это даст вам следующий вход

$(this.$element.context).parent().next().find(".typeahead") 
0

Вы не упоминаете если this имеет в виду какой-то другой объект-что машинописный или this является undefined. Если это не определено (Мое предположение), тогда вам нужно связать это с afterSelect.

var $input = $('.typeahead'); 
$input.typeahead({ 
    ... 
    afterSelect: function (item) { 
     $(this).next('.input-hidden').val(item.id); 
    }.bind(this) 
}); 
+0

$ (this) refres to typeahead object. Пожалуйста, смотрите пример JSFiddle выше. – marcelo2605

Смежные вопросы