2016-02-13 41 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对象和用户$ 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指的是一些,其他对象的预输入,或thisundefined你没有提到。如果它没有定义(我的猜测),那么你需要将它与afterSelect绑定。

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

$(this)反射到一个前端对象。请参阅上面的JSFiddle示例。 – marcelo2605

相关问题