Установка многозначного параметра в JavaScript - PullRequest
1 голос
/ 10 января 2009

Когда я отправляю форму в HTML, я могу передать параметр несколько раз, например

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

Тогда в структурах у меня может быть бин со свойством String [] id, и он будет правильно заполнять массив.

Мой вопрос: как я могу это сделать в Javascript? Когда у меня есть массив, и я устанавливаю form.id.value = myArray, он просто устанавливает значение в список через запятую. Итак, в конце Struts, я просто получаю одноэлементный массив, то есть строку «2,4».

Я должен добавить, мне нужно отправить это в форме, чтобы я не мог просто сгенерировать запрос GET, например ID = 2 & ID = 4.

Ответы [ 4 ]

2 голосов
/ 10 января 2009

Это то, что вы ищете? Он генерирует скрытое поле формы для каждого элемента массива 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);
}
2 голосов
/ 10 января 2009

Не совсем понятно, что вы пытаетесь сделать, но вот ход:

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

1 голос
/ 10 января 2009

forms[0].elements.theName содержит коллекции всех элементов с атрибутом name '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>
1 голос
/ 10 января 2009

Один из подходов - присвоить каждому входу уникальный идентификатор: -

<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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...