表单<select>值未提交

时间:2017-01-11 13:49:13

标签: jquery html forms prestashop-1.6

我正在研究prestashop 1.6模块。每个标签中有3个标签,每个标签有1个表格。 我已经合并了3个表单,以便通过单击3个提交按钮中的任何一个来提交它们。 我使用的jquery: $(&#39; .submit_general&#39;)。bind(&#39;点击&#39;,function(){     $(&#39;#form1:input&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#general&#39;);     $(&#39;#form2:input&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#general&#39;);     $(&#39;#form1 select&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#general&#39;);     $(&#39;#form2 select&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#general&#39;);     console.log($(&#39;#form1 select&#39;)。val());     console.log($(&#39;#form2 select&#39;)。val()); }); $(&#39; .submit_form1&#39;)。bind(&#39;点击&#39;,function(){     $(&#39; #general:input&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#form1&#39;);     $(&#39;#form2:input&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#form1&#39;);     $(&#39;#form2 select&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#form1&#39;); }); $(&#39; .submit_form2&#39;)。bind(&#39;点击&#39;,function(){     $(&#39; #general:input&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#form2&#39;);     $(&#39;#form1:input&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#form2&#39;);     $(&#39;#form1 select&#39;)。not(&#39;:submit&#39;)。clone()。hide()。appendTo(&#39;#form2&#39;); }); 表单2和表单3中的选择元素已由ajax添加。 问题是当我从&#34; general&#34;提交表格时选项卡中的选定元素form1和form2都不会被提交。此外,当我从form1选项卡提交Form1时,选择的值被提交但不是form2,反之亦然。 我通过在控制台中编写来测试帖子值。它给出了正确的结果,但没有提交,而是两个选择器的第一个选项被发布。 HTML: &lt; form id =&#34; form1&#34;&gt; &lt; input type =&#34; hidden&#34;命名=&#34; submitform1&#34;值=&#34; 1&#34;&GT; &lt; div class =&#34; panel&#34; ID =&#34; fieldset_form_1&#34;&GT;     &lt; div class =&#34; form-wrapper&#34;&gt;         &lt; div class =&#34; form-group mailigen_form&#34;&gt;             &lt; div class =&#34; col-lg-9&#34;&gt;                 &lt; div id =&#34; list1&#34;&gt;&lt; div style =&#34; padding:7px 0px&#34;&gt;&lt; font color =&#34; red&#34;&gt;没有列表存在&LT; /字体&GT;&LT; / DIV&GT;&LT; / DIV&GT;             &LT; / DIV&GT;         &LT; / DIV&GT;     &lt; / div&gt;&lt;! - /.form-wrapper - &gt;     &lt; div class =&#34; panel-footer&#34;&gt;         &lt; button type =&#34;提交&#34;值=&#34; 1&#34; ID =&#34; configuration_form_submit_btn_1&#34;命名=&#34; submitform1&#34; class =&#34; submit_form1 btn btn-default pull-right&#34;&gt; Save&lt; / button&gt;     &LT; / DIV&GT; &LT; / DIV&GT; 添加了AJAX响应而不是列表文本: &lt; select name =&#34; form_1&#34; ID =&#34; form_1&#34;&GT; &lt; option value =&#34; 1&#34;&gt;测试清单3&lt; / option&gt; &lt; option value =&#34; 2&#34;&gt;测试清单2&lt; / option&gt; &lt; option value =&#34; 3&#34;&gt;测试列表1&lt; / option&gt; &LT; /选择&GT;

1 个答案:

答案 0 :(得分:1)

这是因为当您克隆元素并将其附加到另一个元素时,它会丢失它的值。您需要将选项的选定属性设置为true。更好的方法是创建输入,将其名称设置为选择的值,将其值设置为选择的值。在服务器端,你不会看到这一点,所以如果你使用输入而不是选择它并不重要。

$('#form1 select, #form2 select').each(function() {
    $("<input type='hidden' name='"+$(this).attr("name")+"' value='"+$(this).val()+"' />").appendTo('#general');
});