在javascript中设置多值参数

时间:2009-01-09 23:44:42

标签: javascript html struts

当我以HTML格式提交表单时,我可以多次传递一个参数,例如

<input type="hidden" name="id" value="2">
<input type="hidden" name="id" value="4">

然后在struts中我可以拥有一个带有String [] id属性的bean,它将正确地填充数组。

我的问题是,我怎样才能在Javascript中这样做?当我有一个数组,并设置form.id.value = myArray时,它只是将值设置为以逗号分隔的列表。那么在Struts结束时,我只得到一个单元素数组,即字符串“2,4”。

我应该补充一下,我需要以表格形式提交,所以我不能只生成一个GET请求,例如: ID = 2&安培; ID = 4

4 个答案:

答案 0 :(得分:2)

这是你要找的吗?它为JavaScript数组的每个元素生成一个隐藏的表单字段:

var el;
for (var i = 0; i < myArray.length) {
    el = document.createElement("input");
    el.type = "hidden";
    el.name = "id";
    el.value = myArray[i];

    // Optional: give each input an id so they can easily be accessed individually:
    el.id = "hidden-myArray-" + i;

    // Optional: give all inputs a class so they can easily be accessed as a group:
    el.className = "hidden-myArray";

    form.appendChild(el);
}

答案 1 :(得分:2)

不是肯定你正在尝试做什么,但这是一个去:

var inputs = document.getElementsByName('id');
for(var i=0; i<inputs.length; i++) {
    var input = inputs[i];
    input.value = myArray[i];
}

迭代所有名为“id”的输入,并从myArray中分配相应的值。

您最好确定myArray.length == document.getElementsByName('id').length

答案 2 :(得分:1)

一种方法是为每个输入提供唯一的ID: -

<input id="id1" type="hidden" name="id" value="2">
<input id="id2" type="hidden" name="id" value="4">

然后在javascript中: -

document.getElementById("id1").value = myArray[0];
document.getElementById("id2").value = myArray[1];

答案 3 :(得分:1)

forms[0].elements.theName包含名称属性为“theName”的所有元素的集合。例如:

<form>
<input type="text" name="test"><br>
<input type="text" name="test">
</form>
<script>
var values = ['foo', 'bar'];
var testElements = document.forms[0].elements.test;
for(var i = 0; i < testElements.length; ++i)
    testElements[i].value = values[i];
</script>