Javascript 将一个窗体的值复制到另一个窗体的隐藏字段中
我有一个包含多个表单的页面,但是所有表单都需要在产品表单中采用单选按钮的值。下面是我的表格的简化版本,它们都在同一页上Javascript 将一个窗体的值复制到另一个窗体的隐藏字段中,javascript,html,forms,variables,copy,Javascript,Html,Forms,Variables,Copy,我有一个包含多个表单的页面,但是所有表单都需要在产品表单中采用单选按钮的值。下面是我的表格的简化版本,它们都在同一页上 <form name="products" method="post" action="" /> <input id="prod_name" name="prod_name" type="radio" value="Product 1" checked /> <input id="prod_name" name="prod_name" type="
<form name="products" method="post" action="" />
<input id="prod_name" name="prod_name" type="radio" value="Product 1" checked />
<input id="prod_name" name="prod_name" type="radio" value="Product 2" />
</form>
<form name="delivery_method1" method="post" action="" />
<input type="hidden" id="item_name" name="item_name" value=""/>
<input type="image" name="submit" value="submit">
</form>
<form name="delivery_method2" method="post" action="" />
<input type="hidden" id="item_name" name="item_name" value=""/>
<input type="image" name="submit" value="submit">
</form>
我知道我应该能够使用JavaScript将“prod_name”的值复制到“item_name”的隐藏字段中,但是我尝试了很多解决方案,但都没有成功
我对JavaScript知之甚少,因此如果有人能向我提供完整的函数以及函数在表单中如何操作的详细信息,我将不胜感激。ID属性应唯一。如果你不需要它们,把它们拿走。如果您使用
id=…
进行样式设置,请将所有出现的id=
替换为class=
,并将CSS中的尖锐(#
)替换为一个点
提交表单时,仅发送具有名称
属性的元素。这应该起作用:
....
<script>
function fill(value) {
var forms = document.forms;
for (var i = 0; i < forms.length; i++) {
if (forms[i].item_name) forms[i].item_name.value = value;
}
}
</script>
</head>
<body>
...
<form name="products" method="post" action="">
<input onchange="fill(this.value)" name="prod_name" type="radio" value="Product 1" checked />
<input onchange="fill(this.value)" name="prod_name" type="radio" value="Product 2" />
</form>
...
。。。。
函数填充(值){
var forms=document.forms;
对于(var i=0;i
所有表单元素都可以通过表单
元素的名称访问。所有表单都可以通过document.forms
对象访问(通过名称或文档中的索引)
当收音机选择更改时,调用函数fill()
,将此.value
作为参数传递。从无线电输入元素的上下文中,此.value
指向无线电元素的值
然后,我们循环遍历文档中的所有表单。如果
item\u name
是表单中的一个元素,则会更新该值。谢谢Rob,这让我比以前更接近了,但是它传递了“未定义”的值-有想法吗?我已经更新了答案。我没有尝试通过函数检索名称,而是将其作为HTML源代码中的参数传递。非常感谢Rob,非常好的答案,我可以从中学习到一些东西……祝您愉快。闭合分隔符缺少“/”。@Grundyso感谢您的提醒。