Jump to content
  • 0

Собрать все занчеия полей формы в один массив


rediskavet
 Share

Question

Есть форма, в которой всего два вида полей(input), type="url" и type="text".

В поле type="url" находится урл страницы, а в поле type="text" текстовый анкор для этой ссылки. Анкоров на каждый урл может быть больше одного.

Полей type="url" тоже может быть больше одного, на каждый соответственно от одного и больше анкоров.

Вопрос в том как мне значения всех этих полей собрать в массив. Застрял на самом начальном этапе:

$('form').serializeArray();

Получаю из этой строчки кода массив из объектов вот такого вида:

[Object { name="url",  value="http://forum.htmlbook.ru/"}, Object{name="text", value="Основной форум"}, Object { name="text", value="форум"}]

Как из полученных данных собрать ассоциативный массив, где каждому урлу будет соответствовать массив из(одного или больше) его анкоров?

пример

Edited by rediskavet
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Ок, .serialize() возвращает строку вида a=1&b=2&c=3&d=4&e=5, которую можно затем распарсить как хочется. Не пойдет?

Вообще да, подходит, мне непринципиально каким образом я это сделаю. Вот только строка после работы .serialize() получилась такого вида:

url=https%3A%2F%2Fwww.google.ru%2F&text=%D0%B3%D1%83%D0%B3%D0%BB

должно быть так:

url=https://www.google.ru/&text=Гугл

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


url = "https://www.google.ru/"
text = "Google"
text = "Гугл"

Что дальше с ними делать?

Link to comment
Share on other sites

  • 0

Вам надо как-то связать эти поля между собой. Т.е. должен быть некий признак у урла и его анкоров, что они относятся друг к другу. Самое лучшее - это сделать data-атрибут у обоих полей. Потом сравнивать значения этих атрибутов, и если они как-то соотносятся, значит эти поля связаны.

Link to comment
Share on other sites

  • 0

Вам надо как-то связать эти поля между собой. Т.е. должен быть некий признак у урла и его анкоров, что они относятся друг к другу. Самое лучшее - это сделать data-атрибут у обоих полей. Потом сравнивать значения этих атрибутов, и если они как-то соотносятся, значит эти поля связаны.

Не так не подходит, т.к. в результате serializeArray() и serialize() есть только по два атрибута на каждое поле(input) это name и value.

Но я по другому допер, у меня каждый блок полей это отдельная форма, тогда если применить serializeArray() к каждой из отобранных форм, то все текстовые поля по любому относятся именно к этой ссылке.

В результате у меня все поля собрались в один... ээ я даже сам теперь не понимаю во что я это все собрал. Это объект где ссылки разложены в массив и достать их можно по индексу, а вот анкоры сгруппированы в другой массив и добавлены как свойство этого объекта и достать их можно по имени свойства('anchors')+индекс ссылки к которой они относятся. Короче на выходе файербаг мне показывает конструкцию такого вида:

Object { 0="http://www.yandex.ru/", anchors0=[1]}

Если интересно вот что получилось

Edited by rediskavet
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy