多个选择值和GET字符串

时间:2013-10-20 21:54:13

标签: php list get

我有一个具有选择输入的表单。它的方法是GET。

<form method="get" action="index.php">
<select name="select[]" multiple>
  <option value="0">Option1</option>
  <option value="1">Option2</option>
  <option value="2">Option3</option>
  <option value="3">Option4</option>
  <option value="4">Option5</option>
</select>
</form>

如果我选择选项2和4,则网址将如下所示:mydomain.com/index.php?select [] = 2&amp; select [] = 4

我希望它看起来像(最好没有方括号)

mydomain.com/index.php?select=2+4

我怀疑我需要一个客户端解决方案,但我不知道任何javascript。或者首先加载一个改变值的页面,然后重定向到带有标题的新页面(位置:'')?

1 个答案:

答案 0 :(得分:1)

似乎你的意图是对值进行求和并返回(6)而不是(4 + 2)。以下代码片段同时执行,使用您想要的那个并废弃另一个。

<form method="get" action="">
    <select multiple id="selector">
        <option value="0">Option1</option>
        <option value="1">Option2</option>
        <option value="2">Option3</option>
        <option value="3">Option4</option>
        <option value="4">Option5</option>
    </select>
    <input type=hidden name=select1 value=0 id=hiddenSelect1>
    <input type=hidden name=select2 value=0 id=hiddenSelect2>
    <input type=button onclick=showw();>
    <input type=submit onclick="return sumValues();">
</form>


<script>
    function sumValues()
    {
        var values = $('#selector').val();
        if (values === null)
        {
            $('#hiddenSelect1').val("");
            $('#hiddenSelect2').val(0);
        }
        else
        {
            var valstring = values.join("+");
    //string (1+2+...)
            $('#hiddenSelect1').val(valstring);
//actually sum them
            var sum = 0;
            values = valstring.split("+");
            for (var i = 0, len = values.length; i < len; i++)
            {
                sum += parseFloat(values[i]);
            }
            $('#hiddenSelect2').val(sum);
        }
        return true;
    }

</script>