我要求将所有字段从一个表单复制到另一个表单.因此,我不是逐字段地复制,而是使用jQuery编写了一个例程form2form.
function form2form(aF1, aF2) {
var selection = "#" + aF1 + " .copy";
$(selection).each(function() {
document.forms[aF2].elements[$(this).attr('name')].value = $(this).val();
});
}
Run Code Online (Sandbox Code Playgroud)
日常工作.例程要求在输入表单字段中有一类副本,否则我不知道如何获取表单中的所有字段.("#form:input")跳过单选按钮并选择字段.
所以我的问题是.
是否有内置功能,所以我不需要这个?有没有更好的方法来编写选择?如何修改例程而不需要该类.我可以传递表单对象而不是表单名称作为文本吗?一般来说有更好的方法吗?
这是一个有效的完整页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test form2form in jQuery</title>
<script type="text/javascript" src="../scripts/jquery.js"></script></head>
<script type="text/javascript">
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' );
}
</script>
</head>
<body>
<h3>Copy form to form</h3>
<form id="form1" name="form1">
form1: f1 <input type="text" name="f1" id="f1" class="copy" value="from A"/>
f2 <input type="text" name="f2" id="f2" class="copy" value="from B" />
<select name="fruit" id="fruit" class="copy" >
<option value="valApple" selected="selected">Apple</option>
<option value="valOrange">Orange</option>
</select>
</form>
<form id="form2" name="form2">
form1: f1 <input type="text" name="f1" id="f1" class="copy" value="target A" />
f2 <input type="text" name="f2" id="f2" class="copy" value="target B" />
<select name="fruit" id="fruit" class="copy" >
<option value="valApple">Apple</option>
<option value="valOrange" selected="selected">Orange</option>
</select>
</form>
<p><a href="#" onclick="testform2form()">Copy Form to Form (form2form)</a></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Roa*_*rth 12
>是否有内置功能,所以我不需要这个?
并不是的.有clone(),但是这更多的元素复制到DOM另一个地方.您需要填充第二个表单.
>我可以传递表单对象而不是表单名称作为文本吗?
是:
function form2form(formA, formB) {
$(':input[name]', formA).each(function() {
$('[name=' + $(this).attr('name') +']', formB).val($(this).val())
})
}
Run Code Online (Sandbox Code Playgroud)
你也可以把它变成一个插件!
(function($) {
$.fn.copyNamedTo = function(other) {
return this.each(function() {
$(':input[name]', this).each(function() {
$('[name=' + $(this).attr('name') +']', other).val($(this).val())
})
})
}
}(jQuery))
Run Code Online (Sandbox Code Playgroud)
ps ":input"伪选择器不跳过无线电或选择输入.它明确包含select和input元素(至少在1.3.2中),其中radio按钮是其中的一部分.
| 归档时间: |
|
| 查看次数: |
14969 次 |
| 最近记录: |