Resolved it using a unique name for typehead inside each iteration.
jQuery(function($) {
$( ".posts_autocomplete" ).each(function(i) {
var fid = $(this).attr("id");
var field = fid.replace("post_", "");
$("#"+fid).typeahead({
name: i,
remote: '/posts/search?q=%QUERY&field='+field,
valueKey: field,
minLength: 2,
limit: 10
});
});
});