26.06.2012, 23:41
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
arachnoz,
Я же привел в пост 15 кроссбраузерный вариант со вторым массивом ключей
перебираете массив ключей по ключу получаете его подмассив
есть варианты с indexOf массивов - но не кроссбраузерно и запутаетесь еще более, поскольку исходную структуру нун тады переделать
Оптимально
1-м массивом объекта всегда иметь сам массив ключей
|
|
26.06.2012, 23:56
|
Интересующийся
|
|
Регистрация: 26.06.2012
Сообщений: 23
|
|
Deff - да, спасибо, я уже понял, что более короткого пути нет
|
|
27.06.2012, 00:19
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
arachnoz,
Есть, - есть - но спешить не стоит - это понятный, не сильно увеличивает контент и универсальный,
Есть и короче
|
|
27.06.2012, 03:21
|
Интересующийся
|
|
Регистрация: 26.06.2012
Сообщений: 23
|
|
В итоге, решил всё вот так.
$(function()
{
var towns = [ ]; \\ простой массив, передающийся в autocomplete
for(i in twns) \\ обходим БД
{
towns[towns.length]=new Array(i); \\ наполняем массив
}
$("#from").autocomplete({ source: towns }); \\ передаём в autocomplete
$("#to").autocomplete({ source: towns });
alert(towns);
});
И что бы вы думали она сказала? Да у тебя же мама педагог... (с)
В общем, autocomlpete сказала - хер вам. Окошко выводит с подсказками и даже, судя по сокращению его размеров при вводе городов, выводит города, но только названий их нет
При том, что если вручную сформировать для неё массив вида
towns = ['город', 'другой город'];
- всё прекрасно выводится. Алерт при этом сгенеренный массив выводит нормально. Никто не сталкивался с такой бедой?
|
|
27.06.2012, 12:31
|
Интересующийся
|
|
Регистрация: 26.06.2012
Сообщений: 23
|
|
Поставил Firebug и посмотрел, что выводится. Понял причину.
Фигня в том, что массив у меня получается такого вида,
[['город'], ['другой город']]
а мне нужно передать в autocomplete
['город', 'другой город']
Подскажите, как обратиться избавиться от лишних скобок в выводе.
|
|
27.06.2012, 12:48
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
похоже, что надо сделать нормальный массив можно скопировать.
|
|
27.06.2012, 12:57
|
Интересующийся
|
|
Регистрация: 26.06.2012
Сообщений: 23
|
|
melky - к сожалению, я не в силах оценить Ваш юмор, т.к. даже не могу понять, чем не нормален этот массив
Я пытался сделать из массива строку при помощи join, но, соответственно, autocomplete не хочет принимать строку. Хочу сказать спасибо разработчикам JQuery за два потраченных дня, мне кажется, я бы уже сам написал autocomplete для этого калькулятора за это время.
Последний раз редактировалось arachnoz, 27.06.2012 в 13:00.
|
|
27.06.2012, 12:58
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от arachnoz
|
Конструкция
var twns ={
'Абакан':['9-12',3150,90,87,83,68,65,62],
'Альметьевск':['5-7',2520,72,69,65,53,50,47],
'Анапа':['4-5',2170,62,60,56,45,42,39]};
for(i in twns){
alert(i+':\n'+twns[i]);}
Выводит по очереди все массивы, содержащиеся в объекте. Я правильно выражаюсь? Это же объект?
Соответственно, напрямую получить название города я не могу.
|
Как это не могу?
Ну косинус же! (с)
var twns ={
'Абакан':['9-12',3150,90,87,83,68,65,62],
'Альметьевск':['5-7',2520,72,69,65,53,50,47],
'Анапа':['4-5',2170,62,60,56,45,42,39]
};
for(i in twns){
alert(i);
};
|
|
27.06.2012, 13:03
|
Интересующийся
|
|
Регистрация: 26.06.2012
Сообщений: 23
|
|
2 ksa - спасибо большое, это я уже догнал и реализовал. Но теперь я собираю это неправильно в массив
|
|
27.06.2012, 13:05
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от arachnoz
|
Но теперь я собираю это неправильно в массив
|
Значит пора таки "собрать" правильно
|
|
|
|