访问不属于表单的值

时间:2013-12-06 18:09:21

标签: html forms form-submit

在我的html中,我有一个组合框,其中列出了所有可用的usertypes,然后输入因用户在组合框中选择的内容而异,这样您就可以看到我有我的onchange。

但我的问题是如何才能访问所选组合框的值?是否有可能获得其选定的值,即使它不是表单的一部分?我已经尝试过只有一个

的表单
<form action="" name="form1" method="post">
<select id="usertype" name="usertype" class="dropdown-select" onfocus="getPrevious()" onchange="set()"  >
        <option value="1" selected="selected">Chairperson</option>
        <option value="2">Dean</option>
        <option value="3">Faculty</option>
        <option value="4">Staff</option>
        <option value="6">Admin</option>
      </select>



<div id="formpage_Chairperson" style="visibility: visible; display: block;">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="text" value="" name="E" />
<input type="text" value="" name="F" />
<input type="Submit" value="Submit Form" name="submitForm" />
</div>


<div id="formpage_Chairperson" style="visibility: hidden; display: none;">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="Submit" value="Submit Form" name="submitForm" />
</div>

</form>

但是当我点击提交表单时没有任何反应。您可以看到我只选择要显示的内容,因为不同的usertypes(例如主席,院长等)也有不同的输入。所以我为每个特定的usertypes制作了不同的表格。但是它会抛出一个错误'Undefined index:usertype',我知道这是因为它不是表单的一部分。
 所以你能给我一些建议,我将如何正确地提出这个问题?谢谢。

这是我的HTML代码:

<select id="usertype" name="usertype" class="dropdown-select" onfocus="getPrevious()" onchange="set()"  >
        <option value="1" selected="selected">Chairperson</option>
        <option value="2">Dean</option>
        <option value="3">Faculty</option>
        <option value="4">Staff</option>
        <option value="6">Admin</option>
      </select>



<form action="" name="form1" method="post">
<div id="formpage_Chairperson" style="visibility: visible; display: block;">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="text" value="" name="E" />
<input type="text" value="" name="F" />
<input type="Submit" value="Submit Form" name="submitForm" />
</div>
</form>

<form action="" name="form1" method="post">
<div id="formpage_Dean" style="visibility: hidden; display: none;">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="Submit" value="Submit Form" name="submitForm" />
</div>
</form>

这是用于处理组合框的onchange事件的Javascript:

var prev = ""

    function pagechange(topage) {
    var page;
    if (prev.length > 0) {
        page = document.getElementById('formpage_' + prev);
        if (page)
            page.style.visibility='hidden';
            page.style.display = 'none';
    }

    page = document.getElementById('formpage_' + topage);
    if (!page)
        return false;

    page.style.visibility='visible';
    page.style.display = 'block';
    prev = topage;
    return true;
    }

    function set(){
    var e = document.getElementById("usertype");
    var selection = e.options[e.selectedIndex].text;
    pagechange(selection);
    }

1 个答案:

答案 0 :(得分:1)

不确定您想如何“访问”它。我假设您对表单数据的其余部分有意义,因此您可以执行以下操作:

function pagechange(topage) {
    var page;
    if (prev.length > 0) {
        page = document.getElementById('formpage_' + prev);
        if (page) {
            page.style.visibility='hidden';
            page.style.display = 'none';
        }

        page = document.getElementById('formpage_' + topage);

        // create hidden input field and append to form
        var input = document.createElement("input");
        input.setAttribute("type", "hidden");
        input.setAttribute("name", "page");
        input.setAttribute("value", topage);
        page.appendChild(input);
        // end of changes

        if (!page)
            return false;

        page.style.visibility='visible';
        page.style.display = 'block';
        prev = topage;
    }
    return true;
}

此外,您错过了if (prev.length > 0)上的右括号,因此我在return true;之前将其关闭。您可能需要根据您的逻辑进行调整。

希望这能让你接近。