复选框值不在逗号分隔的字符串中

本文关键字:分隔 字符串 复选框 | 更新日期: 2023-09-27 18:31:02

我有类似于这样的形式:

<form action="MyForm.htm" method="GET">
    <input type="checkbox" value="1" id="cb1" name="xxx"/>
    <input type="checkbox" value="2" id="cb2" name="xxx"/>
    <input type="checkbox" value="3" id="cb3" name="xxx"/>
    <input type="submit" value="Go!"/>
</form>

选中复选框并提交表单会产生以下 URL:

/MyForm.htm?xxx=1&xxx=2&xxx=3

由于复选框都具有相同的name因此我期待这一点:

/MyForm.htm?xxx=1,2,3

我错过了什么吗?或者我看到的行为实际上是正确的?在这种情况下:以前不是我期望的方式吗?

复选框值不在逗号分隔的字符串中

这就是表单数据的发送方式(一直都是这样)。这些值作为单独的键值对发送,因为它们来自不同的字段,并且可以区分:

<input type="checkbox" value="1,2,3" name="xxx"/>

如果要使单个逗号分隔的值与单独的值分开,则必须在发送表单之前更改数据,例如,通过将值放在隐藏的输入中。

    function cal()
    {
      var res="";
      var box = document.getElementsByName('xxx');
      for(var i=0;i<box.length;i++)
      {
      if(box[i].checked)
      {
        res+= box[i].value;
        if(box[i+1])
        {
           res+=",";
        }
      } 
      }
      var form = document.getElementById('yourform');
      var url = "whateverMypage.php?xxx="+res;
      form.setAttribute('action',url);
    }

传递res为参数,它将包含所有这些选中的项目值