在jQuery中从表单复制到表单

我要求将所有字段从一个表单复制到另一个表单。 因此,我不是逐字段地复制,而是使用jQuery编写了一个例程form2form。

function form2form(aF1, aF2) { var selection = "#" + aF1 + " .copy"; $(selection).each(function() { document.forms[aF2].elements[$(this).attr('name')].value = $(this).val(); }); } 

日常工作。 例程要求在输入表单字段中有一类副本,否则我不知道如何获取表单中的所有字段。 (“#form:input”)跳过单选按钮并选择字段。

所以我的问题是。

是否有内置function,所以我不需要这个? 是否有更好的方式来编写选择? 如何修改例程而不需要该类。 我可以传递表单对象而不是表单名称作为文本吗? 一般来说有更好的方法吗?

这是一个有效的完整页面:

     test form2form in jQuery   function form2form(aF1, aF2) { var selection = "#" + aF1 + " .copy"; $(selection).each(function() { document.forms[aF2].elements[$(this).attr('name')].value = $(this).val(); }); } function testform2form () { form2form ('form1', 'form2' ); }    

Copy form to form

form1: f1 f2 Apple Orange
form1: f1 f2 Apple Orange

Copy Form to Form (form2form)

>是否有内置function,所以我不需要这个?

并不是的。 有clone() ,但更多的是将元素复制到DOM中的另一个位置。 您需要填充第二个表单。

>我可以传递表单对象而不是表单名称作为文本吗?

是:

 function form2form(formA, formB) { $(':input[name]', formA).each(function() { $('[name=' + $(this).attr('name') +']', formB).val($(this).val()) }) } 

你也可以把它变成一个插件!

 (function($) { $.fn.copyNamedTo = function(other) { return this.each(function() { $(':input[name]', this).each(function() { $('[name=' + $(this).attr('name') +']', other).val($(this).val()) }) }) } }(jQuery)) 

ps ":input"伪选择器不跳过无线电或选择输入。 它明确地包括selectinput元素(至少在1.3.2中),其中radio按钮是其中的一部分。

我不得不将它添加到插件中以使其操作复选框。

 $('[name=' + $(this).attr('name') +']', other).attr("checked", $(this).attr("checked"));