【问题标题】:Drop updating a hiddenfield with an unrelated value删除使用不相关值更新隐藏字段
【发布时间】:2009-06-29 14:39:24
【问题描述】:

如果您想将隐藏字段的值更改为不在下拉列表值中的值,就像这样

<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>

【问题讨论】:

    标签: javascript forms webforms


    【解决方案1】:

    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 变量将每个选项的值映射到应设置的隐藏属性。

    【讨论】:

    • 如何在更改时调用此函数?
    • 您在原始问题中的写法是正确的。当用户更改下拉框的值时,将调用该函数。尝试添加 alert('保管箱的值已更改');到函数顶部,每次调用都会弹出一个框。
    • 这里是我正在使用的 javascript
    • 这是形式
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      很遗憾,您需要 IF 语句。您可以在 Firefox 和可能的其他浏览器中对选项标签使用 onclick 事件,但在 IE 中,您不能在选项元素上设置任何事件,只能在选择元素上设置。

      【讨论】:

        猜你喜欢
        • 2014-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-27
        • 2016-12-03
        • 1970-01-01
        相关资源
        最近更新 更多