Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вложенные формы (https://javascript.ru/forum/dom-window/40669-vlozhennye-formy.html)

negr78 15.08.2013 09:29

Вложенные формы
 
Цель:
Большой интерфейс = большая форма, которая должна отправится.
Визуально все разбито на закладки и в некоторых нужно подгружать ajax-ом свои мелкие формочки с кнопкой "сохранить", которые отправляют только свои данные PHP и результат появляется только в этой вкладке. Работоспособность основной формы не страдает от этого.

Решение:
* Напрашивается вложенность форм - к сожалению не реализуемо.
* Можно при сохранении вкладки менять action общей формы и отправлять вообще все, а PHP закладки должен игнорировать лишнюю инфу.
* Можно убрать все формы, а сделать div с атрибутами action, method и т.д. При нажатии "сохранить" менять div на form и отравлять ее. Как бы эмуляция вложенности форм получается.

Вопрос:
Может есть более простые решения?

danik.js 15.08.2013 10:01

Приведи простой пример html-кода, демонстрирующий твою проблему.

negr78 15.08.2013 21:01

<div style="border:1px solid #000;padding:10px">
	Это общая форма<br>
	<form>
	<input name="a" value="a">

		<div style="border:1px solid #000;padding:10px">
		Это как-бы вложеная форма, подгрузилась ajax-ом, должна локально отработать, ajax-ом же, и пропасть не трогая общую форму.<br>
		<input name="b" value="b"><input name="file" type="file">
		<input type="button" value="сохранить только input=b и файл">
		</div>

	<input type="button" value="сохранить общую форму, нажимается в последнюю очередь">
	</form>
</div>


В dom можно вынести "вложенную форму" из общей: отдельным окном, фреймом, position:absolute - но это не желательно, хочется что бы все было встроено в дизайн одной страницы и растягивалось/сжималось по мере появления/пропадания вложенных форм.

negr78 15.08.2013 21:11

Идеально было бы, что бы подформу рожал и обрабатывал один PHP скрипт и она работала в браузере локально - не зависимо входит она в состав другой формы или нет.

Пока склоняюсь к решению заменить все <form> на <div> и переделывать их (div-form-div-...) по мере необходимости..

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

Еще варианты?

danik.js 15.08.2013 21:13

А почему input[type=button] а не input[type=submit] ?

negr78 15.08.2013 21:49

Это детали, к сути дела наверное не относится.

danik.js 15.08.2013 22:07

Можно к примеру так сделать:

<div style="border:1px solid #000;padding:10px">
    Это общая форма<br>
    <form action="/handler">
    <input name="a" value="a">
 
        <div style="border:1px solid #000;padding:10px">
        Это как-бы вложеная форма, подгрузилась ajax-ом, должна локально отработать, ajax-ом же, и пропасть не трогая общую форму.<br>
        <input name="b" value="b"><input name="file" type="file">
        <button type="submit" name="action" value="action1">Сохранить 1</button>
        </div>
 
    <button type="submit" name="action" value="action2">Сохранить 2</button>
    </form>
</div>



А /controller уже делегирует обработку в зависимости от пришедшего "action"

negr78 16.08.2013 13:20

С одной формой и контроллером логика кода очевиднее, это плюс.
Минус: если в общей форме, где-то вверху присобачили файл, потом отправили "подформу" то будут ждать отправки файла, который после этого уйдет прямиком в помойку. Большой файл родит паузы, вплоть до 1 минуты.


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