我有一个虚拟表单和实际表单,在某些时候我想将所有输入值从虚拟表单复制到真实表单。 虚拟字段将与真实表单具有相同的名称(因此我可以将它们匹配)。
所以以虚拟形式:
<input name="item1" value="field1" />
<input name="item2" value="field1" />
<input name="item3" value="field1" />
以实际形式:
<input name="item1" value="" />
<input name="item2" value="" />
<input name="item3" value="" />
我假设我需要以虚拟形式迭代每个输入(使用jQuery .each()?),同时在JS对象中收集名称和值。 然后迭代真实形式的每个输入,匹配名称作为选择器并设置值(也许这可以在一个.each()函数中完成???)
我已经开始使用以下代码,它只将值(和索引)抓取到数组中,但因为我需要两个值(名称和值,索引无关紧要)我假设我需要一个对象而不是一个数组,但真的不知道从哪里开始。
var inputValues = [];
$("#dummyForm input").each(function() {
inputValues.push($(this).val());
});
非常感谢任何帮助或建议。
答案 0 :(得分:2)
像
一样映射它们
$('#DummyForm [name]').each(function() {
var name = $(this).attr('name');
$('#RealForm [name="' + name + '"]').val($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<form id="DummyForm">
<input name="item1" value="field1" />
<input name="item2" value="field2" />
<input name="item3" value="field3" />
</form>
<form id="RealForm">
<input name="item1" value="" />
<input name="item2" value="" />
<input name="item3" value="" />
</form>
答案 1 :(得分:1)
您可以执行以下操作:
$('#dummy input').each(function(){
if($('#real input[name='+$(this).prop('name')+']').length == 1)
$('#real input[name='+$(this).prop('name')+']').val($('#dummy input[name='+$(this).prop('name')+']').val())
});
这是我的Fiddle ...