【问题标题】:get multiple checkbox checked value in c#在c#中获取多个复选框选中的值
【发布时间】:2016-03-04 02:15:17
【问题描述】:

在我的网络表单中,我动态生成多个复选框。因此它们不受控制。我正在尝试使用 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.即使没有选中,我如何获得所有三个值

【问题讨论】:

  • 不,它是逗号分隔值。此外,如果未选中任何复选框,则不会给出任何值。例如,检查 chbx1 和 chbx3 而未检查 chbx2。我得到的结果是“抑制,抑制”。只有两个值而不是三个
  • 从复选框中删除值,看看你得到了什么?我认为它应该是真的,假的。告诉我

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


【解决方案1】:

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

您需要为添加的每组复选框添加一个隐藏输入,名称类似于 name="[checkbox name]_allValues"

<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"] 中的完整列表,其中未选中框的空白值类似于您现在对空文本框控件的列表。

【讨论】:

  • 很高兴它有帮助,您可以投票或将其标记为答案
【解决方案2】:

三个复选框的名称属性值相同。您应该有不同的内容以确保它们可以与服务器端的请求表单集合分开读取。此外,如果是复选框,则应检查属性。希望这会给您指明正确的方向。

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

【讨论】:

    【解决方案3】:
     <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()
        });
     });
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 2013-05-15
      • 1970-01-01
      • 2016-05-02
      • 2015-02-11
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多