1

当我在 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

4 回答 4

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);
}
于 2009-01-10T00:09:47.057 回答
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

于 2009-01-10T00:11:49.503 回答
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];
于 2009-01-09T23:55:41.530 回答
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>
于 2009-01-10T00:16:17.823 回答