单击时为表单数组添加值

时间:2012-07-23 12:34:04

标签: jquery onclick

我有下面的代码工作onclick。

<form action="" name="testform" method="post" id="testform">
<input type="hidden" value="" name="a">
<input type="hidden" value="" name="b">
<input type="hidden" value="" name="c">
<select>
    <option value=""></option>
    <option value="" onclick="document.testform.a.value='12'; document.testform.b.value='111'; document.testform.c.value='123'">1</option>
    <option value="" onclick="document.testform.a.value='21'; document.testform.b.value='222'; document.testform.c.value='232'">2</option>
    <option value="" onclick="document.testform.a.value='32'; document.testform.b.value='333'; document.testform.c.value='233'">3</option>
    <option value="" onclick="document.testform.a.value='43'; document.testform.b.value='444'; document.testform.c.value='344'">4</option>
    <option value="" onclick="document.testform.a.value='54'; document.testform.b.value='555'; document.testform.c.value='345'">5</option>
</select>     

当您选择1时,a,b,c的隐藏字段的值为1.

这很好但是我在这里有一个更大的项目,用户可以在整个表单中为'a'选择多个值。没有onclick我可以很好地工作,例如

<input type="hidden" name="a[]" value="1">

但是当我做的时候

<form action="" name="testform" method="post" id="testform">
<input type="hidden" value="" name="a[]">
<input type="hidden" value="" name="b[]">
<input type="hidden" value="" name="c[]">
<select>
    <option value=""></option>
    <option value="" onclick="document.testform.a[].value='12'; document.testform.b[].value='111'; document.testform.c[].value='123'">1</option>
    <option value="" onclick="document.testform.a[].value='21'; document.testform.b[].value='222'; document.testform.c[].value='232'">2</option>
    <option value="" onclick="document.testform.a[].value='32'; document.testform.b[].value='333'; document.testform.c[].value='233'">3</option>
    <option value="" onclick="document.testform.a[].value='43'; document.testform.b[].value='444'; document.testform.c[].value='344'">4</option>
    <option value="" onclick="document.testform.a[].value='54'; document.testform.b[].value='555'; document.testform.c[].value='345'">5</option>
</select>     

我的隐藏值中没有插入任何内容。

为什么会这样?

有没有更好的方法来做我想用jQuery做的事情?

2 个答案:

答案 0 :(得分:4)

以下是针对您的问题修改后的jsfiddle链接。 http://jsfiddle.net/et3r7/12/请检查这是否对您有所帮助。我已经隐藏了文本以显示结果,你可以将它们隐藏起来。

我已经清理了一点代码。删除了所有onClick代码。

答案 1 :(得分:2)

我认为.value不是数组的属性。 (实际上,我是一个derp,它可能是数组元素的属性 - 我会查找它)我还会查看数组的push()方法来添加元素。

还有其他几种方法可以完成这项任务。使用JS,您可以稍微抽象一下,并使用单个函数来完成每次单击所做的工作,这将使您的代码更加简洁。

如果jQuery也很容易做到,但我会评估这个功能是否值得额外下载(jQuery是32KB缩小和压缩)。