在表单中,我有一个select
元素id="keywords"
。此元素包含size="6"
,但HTML文件中没有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;
}
}
}
}
答案 0 :(得分:1)
变化:
<select name="name" ...
要:
<select name="name[]" ...
尝试执行此操作,并将值添加到数组
从您发布的HTML代码
变化:
<select id="keywords" size="6"></select>
为:
<select name="keywords[]" id="keywords" size="6"></select>
答案 1 :(得分:1)
我提出了以下解决方案:
我将表单的submit
元素更改为button
,点击后执行submitForm()
。 submitForm()
执行以下操作:
function submitForm() {
for (i = 0; i <= 5; i = i + 1) {
var keyHidden;
keyHidden = document.createElement("input");
keyHidden.setAttribute("type", "hidden");
keyHidden.value = keywordsArea.options[i].value;
keyHidden.name = "keywords[]";
videoForm.appendChild(keyHidden);
}
videoForm.submit();
}
因此,keywords
元素中的选项值放在隐藏的input
元素中并以这种方式传递。