Reputation: 10645
I have 2 forms, 1 in my content and one in the sidebar of my website. I submit them via $_GET
, but I want to submit the form when any of the selects are changed. Since they're in 2 different locations and wrapped in 2 separate form tags I need to append #form1
to #form2
then submit #form2
. I've looked through the SO questions and everything deals with :input
and clone()
but according to the documentation clone()
does not work with select
boxes. It reads: .clone() Documentation
Note: For performance reasons, the dynamic state of certain form elements (e.g., user data typed into textarea and user selections made to a select) is not copied to the cloned elements. When cloning input elements, the dynamic state of the element (e.g., user data typed into text inputs and user selections made to a checkbox) is retained in the cloned elements.
So how do I append a form of select
to a separate form?
Here's what I've tried so far:
jQuery('#form1 select, #form2 select').change(function(){
// Tried this
jQuery('#form1 select[name="select_name"]').append('#form2');
// Tried this before the research
jQuery('#form1 select').clone().hide().append('#form2');
// Form submission works without the above code
jQuery('#form2').submit();
});
Neither of the above worked, nor do I get any errors in my console. Worst comes to worst I can loop through and append the values as hidden inputs but I was hoping to avoid that.
Upvotes: 0
Views: 2155
Reputation: 10305
In your first attempt
jQuery('#form1 select[name="select_name"]').append('#form2');
will attempt to append #form2
to #form1 select[name="select_name"]
Thinking about it... how can you append a form to a select element?
If your intention is to append the select options from form1 to form2 then you just have to switch around those statements.
jQuery('#form2').append('#form1 select[name="select_name"]');
This will append the select
options from form1
to form2
Upvotes: 2
Reputation: 18344
You can serialize the forms, append the result and issue a POST:
$.post( url, $("#form1").serialize() + "&" + $("#form2").serialize() );
Upvotes: 0