Страница, на которую вы ссылались, исчезла, поэтому я не могу посмотреть на ваш полный пример. Но вот несколько мыслей для рассмотрения ...
Когда я делаю такие вещи, я обычно избегаю создания субформы в iframe. Вместо этого я помещаю все поля в одну форму. Новые поля добавляются динамически, если необходимо, все в той же форме.
Затем вы можете отправить всю форму целиком, если вам нужно - эта часть становится легкой.
Если вам нужно отправить только часть формы, вы можете выбрать нужные поля во время отправки.
Чтобы выполнить подобную «выбранную вишню», просто создайте новый скрытый iframe с формой в нем; затем используйте [jQuery's .clone()
function], чтобы скопировать поля, которые вам нужны, и вставить копии в новую скрытую форму; наконец, просто отправьте скрытую форму.
вот краткий пример , который был скомбинирован из какого-то старого кода, который у меня есть.
Альтернативный подход
Может быть, вы могли бы объединить аспект моего подхода с вашим кодом, каким он является сегодня ... У вас уже есть свои подформы в их собственном iframe - и все это работает. Проблема в том, что вам нужны данные вашей формы для отправки вместе с основными данными формы.
Таким образом, вы можете использовать clone()
, как я описал выше - но в обратном направлении. Когда кнопка обновления нажата, просто clone()
все, что находится внутри вашего iframe, и поместите его в скрытый div, который находится внутри вашей основной формы. Затем продолжайте и дайте форме отправить, взяв с собой все данные. Просто убедитесь, что имена ваших элементов уникальны во всех двух формах (поскольку все в конечном итоге окажется в одной и той же форме).
Может быть, что-то вроде этого:
$(function(){
$('#item_edit').submit(function(){
alert('try');
var frmContents = $('iframe').first().contents().find('form > *').clone(true);
var el = $('<div></div>');
el.append( frmContents );
el.css('display','none');
$('#item_edit').append( el );
});
});