传递表单中的所有选项值

时间:2015-04-19 23:46:15

标签: javascript php html forms

在表单中,我有一个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到另一页面。我认为,因为我将这些元素命名为keyword1keyword2等,然后这些值将与表单的其余部分一起传递。表单中的其他输入值正在成功传递,但这些关键字不会发生这种情况。

为了将这些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;
            }
        }
    }
}

2 个答案:

答案 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元素中并以这种方式传递。