Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Доступ к динамически созданным полям формы (https://javascript.ru/forum/misc/61588-dostup-k-dinamicheski-sozdannym-polyam-formy.html)

Nicson 24.02.2016 22:30

Доступ к динамически созданным полям формы
 
Всем привет!
Начал изучать JavaScript, подскажите, как сделать.
Есть форма в которой поля добавляются динамически. Уникальным атрибутом этих полей является name. Он имеет вид - [Application][i][title], где i - число. Получается своеобразный массив. К этим полям и нужен доступ, чтобы потом с каждым из них можно было управлять с помощью JavaScript. Как это сделать (лучше, проще) ? Или ткните меня где про это можно почитать. Спасибо.

AciDWarrioR 25.02.2016 09:10

Nicson,
Ну Вам должен помочь Jquery.
Но в целом достаточно размыто Вы поставили задачу. Желательно бы код выложить, как у Вас все устроено и подробности. Надеюсь ссылка Вам поможет.

Nicson 25.02.2016 20:10

Цитата:

Сообщение от AciDWarrioR (Сообщение 409207)
Nicson,
Ну Вам должен помочь Jquery.
Но в целом достаточно размыто Вы поставили задачу. Желательно бы код выложить, как у Вас все устроено и подробности. Надеюсь ссылка Вам поможет.

Спасибо. Буду пробывать. Но если не понятно, тогда расскажу, как все работает сейчас:

Корпоративный сайт, на котором работники добавляют заявки на нужные детали. Начальник потом видит эти заявки и обрабатывает. На странице добавления заявки есть форма добавления - деталей в заявке может быть сколько угодно, поэтому поля для ввода добавляются динамически. Нажимаешь на кнопку и поле добавилось. Все работает, но сейчас заявки заполняются "руками" работников и вот есть идея сделать, чтобы в одном поле работник вводил каталожный номер, а в другом появлялось название, чтобы не было ошибок ввода. Если форма статичная, то есть изначально прописана в коде - у меня все работает через ajax. Но когда делаю на этих динамических полях, тогда возникают проблемы с поиском элементов этих полей, чтобы передавать данные. Поэтому и появился этот вопрос - как можно получать доступ к динамическим полям формы. Сам сайт написан на CakePHP 2. Писал сам, поэтому если нужен еще какой то код - могу выложить или что то объяснить.

laimas 26.02.2016 06:19

Цитата:

Сообщение от Nicson
Уникальным атрибутом этих полей является name. Он имеет вид - [Application][i][title], где i - число.

Если имена полей будут именно такими [Application][i][title], то сервер вообще ничего не получит, это ключи без имени.

Получить к динамически добавляемому элементу, это не конкретно. Если к примеру подразумевается назначение обработчика, то лучше делегирование в этом случае. Если же обратиться к нему, то можно и по имени, вот только возникает вопрос что же это за i такое, если просто порядковый номер, то его можно без вреда и выбросить, если это признак, пусть и временный, то опять смотря чего, можно ведь его и знать.

Вопрос слишком абстрактный.

Deff 26.02.2016 15:12

Цитата:

Сообщение от Nicson
2. Писал сам, поэтому если нужен еще какой то код - могу выложить или что то объяснить.

Выложите текущий HTML код формы заполненный руками(без аяксов) на два или три наименования (пустые строки наименований можно не включать, если они идентичны по структуре заполненным)

Nicson 26.02.2016 15:22

Спасибо, за советы и помощь. Вроде получилось. Сделал так: заполняешь строку данными, нажимаешь кнопку добавить строку - предыдущая становиться readonly, а в новой все работает. Может конечно, криво, но работает. Как такой вариант в плане оптимизации и быстроты работы ?
Я недавно начал работать в Явой, поэтому так. Но изучение не прекращаю, а с набором опыта буду код улучшать. Еще было бы здорово, если бы посоветовали, что почитать, чтобы побыстрей вьехать в курс дела. Спасибо всем!

laimas 26.02.2016 15:48

Цитата:

Сообщение от Nicson
Сделал так: заполняешь строку данными, нажимаешь кнопку добавить строку - предыдущая становиться readonly, а в новой все работает.


А если замечена ошибка в предыдущем и надо исправить? Вы не считаете нужным пояснять неизвестное, поэтому трудно судить о том правильно или нет делаете, но именование полей и описание задачи позволяют сказать - Нет.

Nicson 26.02.2016 15:50

Цитата:

Сообщение от laimas (Сообщение 409368)
А если замечена ошибка в предыдущем и надо исправить? Вы не считаете нужным пояснять неизвестное, поэтому трудно судить о том правильно или нет делаете, но именование полей и описание задачи позволяют сказать - Нет.

Извиняюсь, это правда - упускаю такие вещи из виду. Так вот - если в предыдущей ошибка - эту строку можно только удалить и написать по новой. Начальство такой вариант вроде устраивает.

laimas 26.02.2016 16:00

Цитата:

Сообщение от Nicson
Так вот - если в предыдущей ошибка - эту строку можно только удалить и написать по новой.


Это не правильно, вы изначально неправильно поступаете. Удалять предыдущее, чтобы удалить ошибку, это слишком. :)

Может все таки поясните что означают имена формы?

Nicson 26.02.2016 16:03

Цитата:

Сообщение от laimas (Сообщение 409370)
Это не правильно, вы изначально неправильно поступаете. Удалять предыдущее, чтобы удалить ошибку, это слишком. :)

Может все таки поясните что означают имена формы?

Это уникальное имя, по которому CakePHP "понимает" что это за поле и добавляет из него данные в базу. Это если проще.
Я бы выложил весь код формы в HTML, просто там он добавляет кучу всего и страница получается весьма большой.

А в чем не правильность того, чтобы удалить строку, если в ней ошибка ?
Попробую выложить сюда пару полей этой формы из вывода.


Часовой пояс GMT +3, время: 00:09.