【问题标题】:Checkbox values are not in a commaseparated string复选框值不在逗号分隔的字符串中
【发布时间】:2013-09-11 07:13:23
【问题描述】:

我有类似这样的表格:

<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

我错过了什么吗?还是我看到的行为实际上是正确的?在那种情况下:这不是我所期望的吗??

【问题讨论】:

  • 注意specification不符合您的期望... "控件名称/值按照它们在文档中出现的顺序列出。名称与值之间用=' and name/value pairs are separated from each other by &分隔'。”

标签: c# html asp.net .net


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
        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作为参数,它将包含所有这些检查项的值

    【讨论】:

    • 你将如何通过提交表单中的资源?
    • 你可以通过隐藏输入字段
    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 2013-11-02
    • 2015-09-07
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多