загрузочный шрифт с выпадающей кнопкой

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

var colors = ["red", "blue", "green", "yellow", "brown", "black"];
var numbers = ["One", "Two", "Three", "Four", "Five", "Six"];
var names = ["Ahmad", "Ali", "Hatem", "Wesam", "Nour", "Jeorge"];

$( "#search1" ).attr("autocomplete", "off");
$( "#search-fld" ).typeahead({source: colors});

$("#search-drop li a").click(function(){
    $("#search-btn").text($(this).text()); 
    if($(this).text() == 'People') {
        $( "#search-fld" ).typeahead({source: names});
    } else if($(this).text() == 'Salaries') { 
        $( "#search-fld" ).typeahead({source: numbers});
    } else if($(this).text() == 'Jobs') { 
        $( "#search-fld" ).typeahead({source: colors});
    }
});

Вот пример как jsfiddle. Но проблема в том, что одни и те же результаты продолжают появляться, даже если я выбираю другое подменю.

Я хочу знать, как загружать разные результаты ввода с разных ресурсов.

Пожалуйста посоветуй,

===============================

Ошибка динамического ввода

===============================

Новая ошибка


person Ya Basha    schedule 03.04.2013    source источник
comment
Я вижу, что ваш ответ неправильно отформатирован, он должен быть в виде массива js, например ["a lite job 1", "accounting/banking/finance", "admin"].   -  person Dmonix    schedule 06.04.2013
comment
не могли бы вы сказать мне, как его отформатировать, я должен поместить ответ в массив и получить данные из массива? Спасибо за всю вашу помощь   -  person Ya Basha    schedule 06.04.2013
comment
Вы должны вернуть свои данные как json. Я не уверен, какой у вас внутренний язык, но, например, в PHP это выглядит так: $data = array("red", "blue", "green", "yellow", "brown", "black"); $response = json_encode($data);   -  person Dmonix    schedule 06.04.2013
comment
Я использую tcl для серверной части, вы знаете, как это сделать??   -  person Ya Basha    schedule 06.04.2013
comment
К сожалению, я не знаком с tcl. Найдите, есть ли какая-либо функция кодирования, или отформатируйте свои данные самостоятельно в tcl. Хотя это просто строка, поэтому добавьте [ и ], поместите значения в апостроф и разделите значения запятой в цикле.   -  person Dmonix    schedule 06.04.2013
comment
спасибо за вашу помощь   -  person Ya Basha    schedule 06.04.2013
comment
После исправления ответа со стороны сервера и чтения их на стороне jquery с помощью следующего кода: $.get('/autocomp/keywords.adp', { type: 'key', format:'json' ,country:currentIso} , function (data) { $( #search-fld ).data('typeahead').source = data; }); Я все еще получаю повторяющийся первый символ, как вы можете видеть на новом снимке экрана с ошибкой.   -  person Ya Basha    schedule 07.04.2013
comment
Попробуйте обновить исходный текст с опережением текста следующим образом $( "#search-fld" ).data('typeahead').source = JSON.parse(data);   -  person Dmonix    schedule 07.04.2013
comment
Большое спасибо :) :) :) за большую поддержку   -  person Ya Basha    schedule 07.04.2013
comment
еще один вопрос, пожалуйста, как я могу добавить minLength = 2 в код, я пробовал $.get('/autocomp/keywords.adp', { type: 'key', format:'json', country:currentIso}, function ( data) { $( #search-fld ).data('typeahead').minLength = 2, $( #search-fld ).data('typeahead').source = JSON.parse(data); });   -  person Ya Basha    schedule 08.04.2013
comment
Установите атрибут minLength при первой привязке typeahead. Проверьте скрипт jsfiddle.net/mqqQZ/6   -  person Dmonix    schedule 08.04.2013
comment
Теперь, когда я устанавливаю typeahead для зарплат в $.get('/autocomp/keywords.adp', { type: 'key', format:'json', country:currentIso}, function (data) { $( #search- fld ).data('typeahead').source = данные; }); и я установил его в $.get('/autocomp/jobs-title.adp', { type: 'key', format: 'json', country: currentIso}, function (data) { $( #search-fld ) .data('typeahead').source = данные; }); для рабочих мест, сначала загрузите тип, который отлично работает для рабочих мест и зарплат, но когда я нажимаю на зарплату и снова нажимаю на рабочие места, я получаю зарплату, я пытался отвязать и снова связать событие, но тот же результат   -  person Ya Basha    schedule 09.04.2013
comment
Попробуйте использовать $( "#search-fld" ).data('typeahead').source = JSON.parse(data); вместо $( "#search-fld" ).data('typeahead').source = data;   -  person Dmonix    schedule 09.04.2013
comment
Я сделал {извините, что скопировал и вставил старый код} после этого, в первый раз, когда он правильно отображает данные при первой загрузке страницы, и по умолчанию первым параметром являются задания, а данные ввода отображаются правильно при переходе на другой вариант ввода. данные отображаются правильно для второго варианта, но когда я возвращаюсь обратно к заданию, появляются данные опережающего ввода для параметра зарплаты, я думал, что событие опережающего ввода для второго варианта застряло, поэтому я попытался снова отменить привязку() и привязать(), но безуспешно. Большое спасибо   -  person Ya Basha    schedule 09.04.2013
comment
Это может быть проблема с данными, которые вы получаете. Проверьте, нет ли в вашем ответе таких знаков, как ' или ", которые могут его нарушить.   -  person Dmonix    schedule 09.04.2013


Ответы (1)


Это должно работать:

$("#search-drop li a").click(function(){
        $("#search-btn").text($(this).text()); 
        if($(this).text() == 'People') {
            $( "#search-fld" ).data('typeahead').source = names;
        } else if($(this).text() == 'Salaries') { 
            $( "#search-fld" ).data('typeahead').source = numbers;
        } else if($(this).text() == 'Jobs') { 
            $( "#search-fld" ).data('typeahead').source = colors;
        }
});
person Dmonix    schedule 03.04.2013
comment
как я могу добавить результаты удаленных данных для этого примера? Пожалуйста посоветуй. - person Ya Basha; 04.04.2013
comment
Если вы хотите динамически загружать свои данные, я предлагаю использовать ajax-вызовы для внутреннего сценария, где вы делаете запрос к базе данных для примера. Вот как это могло бы выглядеть: if($(this).text() == 'People') { $.post('/query', { type: 'People' }, function (data) { $( "#search-fld" ).data('typeahead').source = data; }); } - person Dmonix; 04.04.2013
comment
привет, я использовал $.get('/autocomp/keywords.adp', { type: 'key', country:usa}, function (data) { $( #search-fld ).data('typeahead').source = данные; }); Я мог видеть, что запрос успешно получен со статусом 200, и видеть слова ответа от инструментов разработчика, но проблема, когда я хочу попробовать автозаполнение, повторяет символ, который я набрал 8 раз, и когда я набираю второй или третий символы, список автозаполнения пропадать - person Ya Basha; 06.04.2013
comment
список ответов, который я получаю от запроса, содержит много слов, таких как: admin, list, state, ededes ..... - person Ya Basha; 06.04.2013
comment
if($(this).text() == 'Люди') { if($(this).text() == 'Люди') { $.post('/query', { type: 'Люди' } , function (data) { $( #search-fld ).data('typeahead').source = data; }); } и результат ответа я вижу: - person Ya Basha; 06.04.2013
comment
a lite job 1 бухгалтерия/банкинг/финансы ачаты админ администрация реклама - person Ya Basha; 06.04.2013
comment
Я добавил снимок экрана выше в вопросе - person Ya Basha; 06.04.2013