具有相同名称的隐藏输入:如何仅发送所选复选框的值?

时间:2017-02-21 15:33:35

标签: javascript php jquery html checkbox

我们有多个复选框链接到多个隐藏字段并使用相同名称。我们怎样才能只发送所选复选框的值?

PHP

<input type"checkbox" name="<?echo $filename;?>_<?echo $variable;?>"
id="filename_<?echo $variable;?>" value="1">

<input type="hidden" name="item_<?echo $filename;?>" 
value="<?echo $quantity;?>">

如果选择了两个或多个具有相同名称的复选框,那么我们如何才能获得每个隐藏输入的正确值而不是最后一个的值?

我们生成的html

<input type"checkbox" name="idfilename_1"
<input type="hidden" name="item_idfilename" value="7">

<input type"checkbox" name="idfilename_2"
<input type="hidden" name="item_idfilename" value="5">

<input type"checkbox" name="idfilename_3"
<input type="hidden" name="item_idfilename" value="11">

5 个答案:

答案 0 :(得分:0)

你可以像这样创建一个数组:

<input type="checkbox" name="item_idfilename[]" value="7">
<input type="checkbox" name="item_idfilename[]" value="5">
<input type="checkbox" name="item_idfilename[]" value="11">

这样您就可以获得已选中复选框的列表。

答案 1 :(得分:0)

您可以为复选框和隐藏使用数组。 有一个名为check [1]的复选框,选中[2],选中[3]和hiddens,名为item_hidden [1],item_hidden [2]等。你可以将每个复选框与隐藏输入相关联。

所以你的输出将是:

<input type"checkbox" name="idfilename[1]" value="1">
<input type="hidden" name="item_idfilename[1]" value="7">

<input type"checkbox" name="idfilename[2]" value="1">
<input type="hidden" name="item_idfilename[2]" value="5">

<input type"checkbox" name="idfilename[3]" value="1">
<input type="hidden" name="item_idfilename[3]" value="11">

服务器端,您将循环idfilename,如果设置了值(因此已选中复选框),您将从item_idfilename数组中获取值。

答案 2 :(得分:0)

Normaly以这种方式完成

<input type"checkbox" name="idfilename_1">
<input type="hidden" name="item_idfilename_1" value="7">

只有选中的一次将在POST数组中有一个字段/索引。

在PHP端获取所选复选框中的字段。

如果知道例如存在array_key,例如idfilename_1然后您可以从$_POST['item_idfilename_1']获取值,如果不离开它的话。

请记住:只有选中的复选框才会在POST阵列中显示一个字段!

答案 3 :(得分:0)

试试这个:

  var $checkedInput = $('input[type=checkbox]:checked');
  if($checkedInput){
        var hiddenValue= $checkedInput.next('input[type=hidden]').val();
  }

---------------或-------------------

 var $checkedInput= $('input[type=checkbox]:checked').next('input[type=hidden]')
                   .map(function() {
                         return $(this).val();
                   }).get();

根据您的代码,您将获得["7", "5", "11"]之类的数组。

答案 4 :(得分:0)

我使用next()获取下一个节点值

&#13;
&#13;
$('[type~=checkbox]').change(function(){
  alert($(this).next().val());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="idfilename_1">
<input type="hidden" name="item_idfilename" value="7">

<input type="checkbox" name="idfilename_2">
<input type="hidden" name="item_idfilename" value="5">

<input type="checkbox" name="idfilename_3">
<input type="hidden" name="item_idfilename" value="11">
&#13;
&#13;
&#13;