2013-09-20 4 views
6

У меня есть массив какСортировка значения в JQuery автозаполнения

["JOAQUIN", "BERNARDINO", "MODOC","ALASKA","MADERA", "ANDERSON"] 

где я заселять их в jQuery UI Autocomplete. Однако порядок сортировки кажется странным.
Например: (Но у меня есть еще No.of записей) Когда я типа "а" возвращает

JOAQUIN 
BERNARDINO 
ALASKA 
MADERA 
ANDERSON 

То, что я пытаюсь, чтобы получить (начиная с)

ALASKA  
ANDERSON 

JSFiddle для моего примера

возможно ли это? Может кто-нибудь указать мне в правильном направлении.

Обновления:

enter image description here

ответ

5
var myarray= ["JOAQUIN", "BERNARDINO", "MODOC","ALASKA","MADERA", "ANDERSON"] 
myarray.sort(); 

Read More

See Demo

мы передаем два аргумента в один источник является request и второй является response,

  • request это означает запрос объект мы делаем, в нашем случае это письмо мы набираем в текстовое поле.

  • response есть функция, которая вернет нам автоматические полные варианты выбора.

Теперь внутри $.map мы проверяем введенные слова с массивом мы назвали JSON.

json.toUpperCase().indexOf(request.term.toUpperCase()) Эта строка преобразует напечатанное слово и массив в один и тот же регистр и возвращает его.

и результаты матчей будут конечным результатом, который имеет список предметов, которые вы задали.

и response(matches); пошлет его на автозаполнение.

+0

если вы читали мой вопрос, я пытаюсь показать что-то вроде ** startwith **. Я обновил образец скриншота. – Praveen

+0

@ user1671639, мы прочитали ваш вопрос, и Dipesh сделал точный, как вы хотите 'startwith', когда набираете слово' a', которое начинается с 'a'. Я также проверил демоверсию. –

+0

@ пользователь1671639 смотреть я модифицировано demo ... есть это вы смысл ..? –

1

Попробуйте

<input type='text' /> 


var json = ["JOAQUIN", "BERNARDINO", "MODOC","ALASKA","MADERA", "ANDERSON", "KINGSTONE"].sort(); 
$('input').autocomplete({ 
    source: json 
}); 

http://jsfiddle.net/Gm9Bz/5/

enter image description here

+0

, если вы читаете мой вопрос, я пытаюсь показать что-то вроде startwith. Я обновил образец скриншота. Надеюсь ты понимаешь. – Praveen

+0

сделано ..... посмотрите на мой скриншот –

+0

нажатие 'k' необходимо вернуть ** KINGSTONE ** первый. – Praveen

3

я столкнулась с той же проблемы с объектами, а не простой массив строк и сортировки необходимо сделать после получения результатов (для достижения " startswith "в верхней части списка). поэтому для будущих искателей я добавлю свое решение.

Используя JQuery, вы можете искать строки в пределах метки комментария объекта, которые начинаются с пользовательского ввода, и объединить остальную часть результата с ними, после слияния использовать библиотеку Underscore.js для удаления дубликатов.

, например:

var objects_array = [{"label":"A_ABC","value":"0"},{"label":"B_ABC","value":"1"},{"label":"C_ABC","value":"2"}]; 

$(document).ready (function() { 

$('#search').autocomplete({ 
    source: function (request, response) { 

     var results = $.ui.autocomplete.filter(objects_array, request.term);    

     var top_suggestions = $.grep(results, function (n,i) { 
           return (n.label.substr(0, request.term.length).toLowerCase() == request.term.toLowerCase()); 
           }); 

     var merged_results = $.merge(top_suggestions,results); 

     var final_results = _.uniq(merged_results,"label"); 

     response(final_results); 
    } 
}); 

}); 

jquery ui starts with

результат Пример: http://i.stack.imgur.com/GKJ8d.png

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