如何仅传递未选中框的值?

时间:2016-05-24 11:07:43

标签: php checkbox

我正在处理一个html表单,其中有许多复选框,但我想只将未经检查的值传递给另一个表单(get_value.php)。

   <form action="get_value.php" method="post">
     <input type='checkbox' name='products[]' value='call1'>col1<br>
     <input type='checkbox' name='products[]' value='call2'>col2<br>
     <input type='checkbox' name='products[]' value='call3'>col3<br>
     <input type='checkbox' name='products[]' value='call4'>col4<br>
     <input type='submit'  value='Submit'>
   </form>

有没有办法过滤$ _POST [&#39;产品&#39;]才能获得未经检查的值?

2 个答案:

答案 0 :(得分:1)

根本不会发送未选中的复选框。例如,如果您检查 col1 col2 ,则会将以下POST数据发送到 get_value.php

array(
    'products' => array(
        'call1',
        'call2',
    ),
)

如果您想确定哪些未经检查,请执行以下操作:

$values = array(
    'call1',
    'call2',
    'call3',
    'call4',
);

$unchecked = array_diff($values, $_POST['products']);

var_dump($unchecked);

结果:

array(2) {
  [2]=>
  string(5) "call3"
  [3]=>
  string(5) "call4"
}

答案 1 :(得分:0)

您还可以在javascipt中获取未选中的复选框值。

试试这个

$('#q').submit(function(e) {
    $('input[type="checkbox"]').each(function(index) {
        if(!this.checked) {
           alert(this.value);
        }
    });
    e.preventDefault();
});

此处q将为formID