Как я могу установить дополнительный var для блуждающего пульта?

Я использую typeahead/bloodhound для автоматического ввода ввода. Мой сайт имеет более 20 полей ввода, все с классом typeahead и атрибутом id.

Моя проблема: мне нужен запрос с% QUERY и% CID. % QUERY - это поиск пользователя, введенного в одно из полей ввода, а% CID - идентификатор из активного поля ввода.

Это мой код:

var search_artikel = new Bloodhound({
 datumTokenizer: function(d) {
 return d.tokens;
 },
 queryTokenizer: Bloodhound.tokenizers.whitespace,
 remote: {
 url: "modules/pc_config/ajax.php?load=search_articles&cat_id=%CID&search=%QUERY",
 replace: function(url, query) {
 //var cat = this.id;
 //return url + "&cat_id=" + cat + "&search=" + query;
 return url.replace('%QUERY', query).replace('%CID', $(this).attr('id'));
 }
 }
 //remote: 'modules/pc_config/ajax.php?load=search_articles&search=%QUERY'

 });

 search_artikel.initialize(this.id);

 $('.typeahead').typeahead({
 hint: true,
 highlight: true,
 minLength: 4
 },
 {
 name: 'phonenumber',
 displayKey: 'number',
 source: search_artikel.ttAdapter(),
 templates: {
 suggestion: Handlebars.compile([
 '<p>{{number}}</p>',
 '<p><i>{{name}} {{surname}}</i></p>',
 '<p><i>{{address}}</i></p>',
 ].join(''))
 }
 });

Все работает отлично, за исключением того, что% CID всегда "не определено". Как я могу заменить% CID активным/фокусным идентификатором из поля ввода?

1 ответ

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

replace: function(url, query) {
 //var cat = this.id;
 //return url + "&cat_id=" + cat + "&search=" + query;
 return url.replace('%QUERY', query).replace('%CID', $(this).attr('id'));
 }

Тем не менее, ваша область недоступна тем, что $ (это) не даст вам элемент jQuery, который, по вашему мнению, вы пытаетесь получить. Поскольку начало вашего кода отключается, я не могу предоставить вам конкретный ответ на ваш код, но если вы обновили:

$(this).attr('id')

Чтобы быть чем-то вроде:

$("#some-selecter").attr('id')

Он будет работать по назначению.

licensed under cc by-sa 3.0 with attribution.