未提交表单 <select> 值
Forms <select> value not submitted
我正在研究 prestashop 1.6 模块。有 3 个选项卡,每个选项卡中有 1 个表单。
我合并了 3 个表单,以便通过单击 3 个提交按钮中的任何一个来提交它们。
我用的jquery:
$('.submit_general').bind('click', function () {
$('#form1 :input').not(':submit').clone().hide().appendTo('#general');
$('#form2 :input').not(':submit').clone().hide().appendTo('#general');
$('#form1 select').not(':submit').clone().hide().appendTo('#general');
$('#form2 select').not(':submit').clone().hide().appendTo('#general');
console.log($('#form1 select').val());
console.log($('#form2 select').val());
});
$('.submit_form1').bind('click', function () {
$('#general :input').not(':submit').clone().hide().appendTo('#form1');
$('#form2 :input').not(':submit').clone().hide().appendTo('#form1');
$('#form2 select').not(':submit').clone().hide().appendTo('#form1');
});
$('.submit_form2').bind('click', function () {
$('#general :input').not(':submit').clone().hide().appendTo('#form2');
$('#form1 :input').not(':submit').clone().hide().appendTo('#form2');
$('#form1 select').not(':submit').clone().hide().appendTo('#form2');
});
select 表格 2 和表格 3 中的元素已由 ajax 添加。
问题是当我从 "general" 选项卡 selected 提交表单时,form1 和 form2 中的元素都没有提交。此外,当我从 form1 选项卡 Form1 提交时 selected 提交的值但不是 form2 的值,反之亦然。
我通过在控制台中写入来测试 post 值。它给出了正确的结果,但没有提交,而是 select 或两个选项的第一个选项得到 posted.
HTML:
<form id="form1">
<input type="hidden" name="submitform1" value="1">
<div class="panel" id="fieldset_form_1">
<div class="form-wrapper">
<div class="form-group mailigen_form">
<div class="col-lg-9">
<div id="list1"><div style="padding: 7px 0px"><font color="red">No list exists</font></div></div>
</div>
</div>
</div><!-- /.form-wrapper -->
<div class="panel-footer">
<button type="submit" value="1" id="configuration_form_submit_btn_1" name="submitform1" class="submit_form1 btn btn-default pull-right">Save</button>
</div>
</div>
AJAX 添加响应以代替无列表文本:
<select name="form_1" id="form_1">
<option value="1"> Test List 3</option>
<option value="2"> Test List 2</option>
<option value="3"> Test List 1</option>
</select>
这是因为当您克隆该元素并将其附加到另一个元素时,它会失去它的价值。您需要将选项的 selected 属性设置为 true。更好的方法是创建一个输入,将其名称设置为 select 的值,并将其值设置为 select 的值。在服务器端,你不会看到这个,所以如果你使用 input 而不是 select.
也没关系
$('#form1 select, #form2 select').each(function() {
$("<input type='hidden' name='"+$(this).attr("name")+"' value='"+$(this).val()+"' />").appendTo('#general');
});
我正在研究 prestashop 1.6 模块。有 3 个选项卡,每个选项卡中有 1 个表单。 我合并了 3 个表单,以便通过单击 3 个提交按钮中的任何一个来提交它们。
我用的jquery:
$('.submit_general').bind('click', function () {
$('#form1 :input').not(':submit').clone().hide().appendTo('#general');
$('#form2 :input').not(':submit').clone().hide().appendTo('#general');
$('#form1 select').not(':submit').clone().hide().appendTo('#general');
$('#form2 select').not(':submit').clone().hide().appendTo('#general');
console.log($('#form1 select').val());
console.log($('#form2 select').val());
});
$('.submit_form1').bind('click', function () {
$('#general :input').not(':submit').clone().hide().appendTo('#form1');
$('#form2 :input').not(':submit').clone().hide().appendTo('#form1');
$('#form2 select').not(':submit').clone().hide().appendTo('#form1');
});
$('.submit_form2').bind('click', function () {
$('#general :input').not(':submit').clone().hide().appendTo('#form2');
$('#form1 :input').not(':submit').clone().hide().appendTo('#form2');
$('#form1 select').not(':submit').clone().hide().appendTo('#form2');
});
select 表格 2 和表格 3 中的元素已由 ajax 添加。
问题是当我从 "general" 选项卡 selected 提交表单时,form1 和 form2 中的元素都没有提交。此外,当我从 form1 选项卡 Form1 提交时 selected 提交的值但不是 form2 的值,反之亦然。
我通过在控制台中写入来测试 post 值。它给出了正确的结果,但没有提交,而是 select 或两个选项的第一个选项得到 posted.
HTML:
<form id="form1">
<input type="hidden" name="submitform1" value="1">
<div class="panel" id="fieldset_form_1">
<div class="form-wrapper">
<div class="form-group mailigen_form">
<div class="col-lg-9">
<div id="list1"><div style="padding: 7px 0px"><font color="red">No list exists</font></div></div>
</div>
</div>
</div><!-- /.form-wrapper -->
<div class="panel-footer">
<button type="submit" value="1" id="configuration_form_submit_btn_1" name="submitform1" class="submit_form1 btn btn-default pull-right">Save</button>
</div>
</div>
AJAX 添加响应以代替无列表文本:
<select name="form_1" id="form_1">
<option value="1"> Test List 3</option>
<option value="2"> Test List 2</option>
<option value="3"> Test List 1</option>
</select>
这是因为当您克隆该元素并将其附加到另一个元素时,它会失去它的价值。您需要将选项的 selected 属性设置为 true。更好的方法是创建一个输入,将其名称设置为 select 的值,并将其值设置为 select 的值。在服务器端,你不会看到这个,所以如果你使用 input 而不是 select.
也没关系$('#form1 select, #form2 select').each(function() {
$("<input type='hidden' name='"+$(this).attr("name")+"' value='"+$(this).val()+"' />").appendTo('#general');
});