在表单中,我有一个带有 id="keywords"
的 select
元素。该元素在 HTML 文件中具有 size="6"
,但没有 option
元素。页面加载时执行的 JavaScript 函数将填充列表,如下所示:
function setKeywords() {
for (i = 0; i <= 5; i = i + 1) {
var option;
option = document.createElement("option");
option.name = "keyword" + (i + 1).toString();
option.value = "null";
option.text = "";
document.getElementById("keywords").add(option);
}
}
然后,用户可以通过其他 JavaScript 函数向列表添加和删除最多六个值(其代码对于本问题的目的没有用),然后我希望传递这六个选项元素的值(以及表单中的其他输入值)通过 POST
发送到另一个页面。我认为,由于我将这些元素命名为 keyword1
、keyword2
等,因此这些值将与表单的其余部分一起传递。表单中的其他输入值已成功传递,但这些关键字却没有发生这种情况。
为了将这些 option
元素的值与表单的其余部分一起传递,我必须更改什么?
编辑 1:这是创建相关 select
元素的 HTML 代码。
<select id="keywords" size="6"></select>
编辑 2:这些是用于向 select
元素添加和删除选项的 JavaScript 函数。 keywordslist
是表单中的另一个 select
元素,其中包含用户可以添加到 keywords
元素的关键字。
var keywordsArea = document.getElementById("keywords");
var keywordslist = document.getElementById("keywordslist");
function addKeyword() {
if (keywordsArea.options[5].value === "null") {
for (i = 0; i <= 5; i = i + 1) {
if (keywordsArea.options[i].value === "null") {
keywordsArea.options[i].value = keywordslist.value;
keywordsArea.options[i].text = keywordslist.value;
break;
}
}
}
}
function removeKeyword() {
if (keywordsArea.selectedIndex >= 0 && keywordsArea.selectedIndex <= 5) {
for (i = keywordsArea.selectedIndex; i <= 5; i = i + 1) {
if (i === 5) {
keywordsArea.options[i].value = "null";
keywordsArea.options[i].text = "";
} else {
keywordsArea.options[i].value = keywordsArea.options[i + 1].value;
keywordsArea.options[i].text = keywordsArea.options[i + 1].text;
}
}
}
}
最佳答案
更改:
<select name="name" ...
致:
<select name="name[]" ...
尝试执行此操作,值将添加到数组中
来自您发布的 HTML 代码
更改:
<select id="keywords" size="6"></select>
至:
<select name="keywords[]" id="keywords" size="6"></select>
关于javascript - 以表单形式传递所有选项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737237/