在c#中获取多个复选框选中的值

时间:2016-03-04 02:15:18

标签: javascript c# asp.net .net checkbox

在我的网络表单中,我动态生成多个复选框。因此他们不在控制之中。我试图使用Request.Form [name]获取值,但它不正确

<input type="checkbox" name="Suppresision" value="Suppresision" />Suppresision

现在我有一个动态(使用Javascript)添加更多类似复选框的添加按钮。所以在我的表元素中我现在有

 <input type="checkbox" name="Suppresision" value="Suppresision" />Suppresision
 <input type="checkbox" name="Suppresision" value="Suppresision" />Suppresision
 <input type="checkbox" name="Suppresision" value="Suppresision" />Suppresision

我如何尝试获取所有三个的值?我正在为文本框做同样的事情但是当我使用Request.Form[textbox name]时,我得到所有这些的逗号分隔值。但是对于我Request.Form["Suppresision"]的复选框,我只得到一个值Suppresision而不是checked or not checked.即使没有检查,我如何得到所有三个值

3 个答案:

答案 0 :(得分:1)

如果您绝对需要获取动态添加的所有复选框控件的列表,则可以在提交表单时将它们组合成隐藏的输入。

您需要为每个添加的复选框添加一个隐藏输入,其名称如name =&#34; [复选框名称] _allValues&#34;

<input type="checkbox" name="Suppresision" value="Suppresision1" />Suppresision 1
<input type="checkbox" name="Suppresision" value="Suppresision2" />Suppresision 2 
<input type="checkbox" name="Suppresision" value="Suppresision3"/>Suppresision 3
<input type='hidden' value='' name="Suppresision_allVals">

然后添加此jQuery以循环复选框组,您将可以访问服务器上每个复选框的完整值列表。

$(document.forms[0]).submit(function(event){
      $('input[type=checkbox]').each(function( index ) { //loop all checkboxes
          $itm = $( this ); 
          $allVals = $('input[name=' + $itm.attr('name') + '_allVals]').first(); 
          if ($allVals.length) {                              //see if we have a hidden input
              $allVals.val($allVals.val()
                  + ($allVals.val().length > 0 ? ',' : ' ')   //add delemiter
                  + ($itm.is(':checked') ? $itm.val() : '')); //add value
          }
      });
  });

通过这种方式,您可以访问Request.Form["Suppresision_allVals"]中的完整列表,其中未选中框的空白值与现在的空文本框控件类似。

答案 1 :(得分:0)

三个复选框具有相同的名称属性值。您应该有不同之处,以确保它们可以与服务器端的请求表单分开阅读。此外,如果是复选框,则应检查属性。希望这会为你提供正确的方向。

<input type="checkbox" name="Suppresision1" checked="checked" />
 <input type="checkbox" name="Suppresision2" checked="" />
 <input type="checkbox" name="Suppresision3" checked="" />

答案 2 :(得分:0)

 <input type="checkbox" class="chkItems" name="Suppresision1" checked="checked" />
 <input type="checkbox" class="chkItems" name="Suppresision2" checked="" />
 <input type="checkbox" class="chkItems" name="Suppresision3" checked="" />

 var chkValue = [];
 $('.chkItems:checked').each(function(i, e) {
 chkValue.push({ 
      chkItem : $(this).val()
    });
 });