javascript - 获取选择值列表作为隐藏字段中分隔的竖线并提交

标签 javascript php jquery html forms

我有一个带有两个选择列表的网络表单,用户将他们想要的项目从一个选择框移动到另一个选择框,当用户点击“保存”按钮时我想获得选择框中所有值的列表命名为“Two”并将它们输入到名为“TwoArray”的隐藏字段中,然后提交表单。我以为我可以使用 .map 来执行此操作,但我一直无法弄清楚,到目前为止的代码如下。注意:我想要一个带分隔符的列表,其中包含名称为“二”的“选择”中的所有值,无论它们是否被“选中”。请帮忙!本例中隐藏域的输出应该是“103,109”

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test for P1727410</title>
    <script src="/ref-files/js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            function moveItems(origin, dest) {
                $(origin).find(':selected').appendTo(dest);
            }

            function moveAllItems(origin, dest) {
                $(origin).children().appendTo(dest);
            }

            $('#left').click(function () {
                moveItems('#Two', '#One');
            });

            $('#right').on('click', function () {
                moveItems('#One', '#Two');
            });

            $('#leftall').on('click', function () {
                moveAllItems('#Two', '#One');
            });

            $('#rightall').on('click', function () {
                moveAllItems('#One', '#Two');
            });
        });
    </script>
</head>
<body>
    <h2>Test for P1727410</h2>
    Available Locations | Selected Locations
    <form method="POST" action="#">
        <select id="One" name="One" multiple="multiple">
            <option value="100">Loc1</option>
            <option value="101">Loc2</option>
            <option value="102">Loc3</option>
        </select>
        &nbsp;
        &nbsp;
        <select id="Two" name="Two" multiple="multiple">
            <option value="103">Loc4</option>
            <option value="109">Loc10</option>
        </select>

        <br />
        <input type="text" name="something" /><br />
        <input type="hidden" name="form" value="1" />
        <input type="hidden" name="TwoArray" value="" />
        <input type="button" id="leftall" value="<<" />
        <input type="button" id="left" value="<" />
        <input type="button" id="right" value=">" />
        <input type="button" id="rightall" value=">>" />
        <input type="button" id="update" value="Save" />
        <br />
        <input type="Submit" name="Submit" value="Submit" />
    </form>
    <p>
    <?php
        if(isset($_POST['form'])) {
            echo "<pre>";
            print_r($_POST);
            echo "</pre>";
        }
    ?>
    </p>
</body>
</html>

最佳答案

尝试使用数组进行存储,然后使用 $.each() 遍历捕获选项值的子项。我把这个函数放在 JavaScript 的最底部,在所有其他监听器下面:

// Listen for an input click (you can listen for whatever)
$('input').on('click',function(e) {
    // Set an array
    var getAllVals  =   [];
    // Loop through this select's options (children)
    $.each($('#Two').children(),function(k,v) {
        // Store the "value" attribute values
        getAllVals.push($(v).attr('value'));
    });
    // Place the imploded array into the field
    $('input[name=TwoArray]').val(getAllVals.join(','));
});

这是一个 jsFiddle 演示,输入为 text,因此您可以看到它的变化:

https://jsfiddle.net/kc66x5sr/

关于javascript - 获取选择值列表作为隐藏字段中分隔的竖线并提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46261071/

相关文章:

javascript - 在 ubuntu 中使用 Flask 将 .js 包含在 .html 中时出现引用错误

javascript - 尝试在 Windows 上执行 package.json 中的脚本会引发 JScript 错误

php - 如何使用 PHP 将 PFX 转换为 CRT 和 PEM?

php - 如何制作 PHP SOAP 客户端并将结果 xml 存储在 php 变量中

jquery - 每次按键jQuery检测输入是否有文本

javascript - Ember 和 d3v4 导入错误

php - 配置 PHP Monolog 以通过流登录到 Amazon S3

php - Ajax 表单 : Wrong value sent back

javascript - 如何加载Javascript及其依赖项?

javascript - 当鼠标具有特定类时更改 div 的背景图像