删除使用不相关的值更新隐藏字段

时间:2009-06-29 14:39:24

标签: javascript forms webforms

如果您想将隐藏字段的值更改为不属于下拉列表值的内容,则

<form>
    <select id="dropdown" name="dropdown" onchange="changeHiddenInput(this)">
        <option value="foo">One - 42</option>
        <option value="bar">Two - 40</option>
        <option value="wig">Three - 38</option>
    </select>

    <input type="hidden" name="hiddenInput" id="hiddenInput" value="" />
</form>

我想通过(如果选择了两个)dropdown =“bar”和hiddenInput =“40”

必须传递该值,但需要影响隐藏字段。

你怎么看?如果那么你需要吗?或者你可以拥有像

这样的东西
<form>
    <select id="dropdown" name="dropdown" onchange="changeHiddenInput(this)">
        <option value="foo" onchange="set hiddenInput - 42">One - 42</option>
        <option value="bar" onchange="set hiddenInput - 40">Two - 40</option>
        <option value="wig" onchange="set hiddenInput - 38">Three - 38</option>
    </select>

    <input type="hidden" name="hiddenInput" id="hiddenInput" value="" />
</form>

3 个答案:

答案 0 :(得分:0)

我会在服务器上保留映射,而不是尝试处理客户端。

忘记隐藏的输入。只需在数据到达服务器后根据下拉列表的值查找值。

答案 1 :(得分:0)

不幸的是,你需要IF语句。你可以在Firefox和其他浏览器中使用onclick事件作为选项标签,但在IE中,你不能在选项元素上设置任何事件,只能在select元素上设置。

答案 2 :(得分:0)

您对onchange属性有正确的想法。你的功能可能如下:

function changeHiddenInput(mySelect) {

    var map = {foo: "42", bar: "40", wig: "38"};
    var index = mySelect.selectedIndex;
    var value = mySelect.options[index].value;

    var hiddenInput = document.getElementById("hiddenInput");
    hiddenInput.value = map[value];
}

map变量将每个选项的值映射到隐藏属性应设置的值。