使用onchange submit获取多个复选框值

时间:2018-03-06 17:51:42

标签: javascript php jquery html get

我正在尝试获取复选框值,并在使用jquery onchange submit提交另一个时保持之前的检查。

问题是在$_GET['marca']数组中只保留了最后一个提交。如果有人知道如何解决这个问题,我将不胜感激。

if ( isset($_GET['marca']) ) {
  $_GET['marca'];
}
elseif ( empty($_GET['marca']) ) {
  $_GET['marca'] = null;
}

<form method="get">
 <input type="checkbox" id="amd" class="checkbox-filtro" name="marca" 
 value="amd">
 <label for="amd">AMD</label>
 <input type="checkbox" id="evga" class="checkbox-filtro" name="marca" 
 value="evga">
 <label for="evga">EVGA</label>
 <input type="checkbox" id="intel" class="checkbox-filtro" name="marca" 
 value="intel">
 <label for="intel">Intel</label>
</form>

$('.checkbox-filtro').on('change', function() {
  this.form.submit();
});

1 个答案:

答案 0 :(得分:1)

复选框的名称应为marca[]以用作数组(由@FunkFortyNiner指示)。

在PHP中,你可以存储一个变量以确保你有一个数组,即使没有发送任何数据。

最后,在HTML中,您可以使用in_array()来检查值是否在您的变量中。如果是,请将属性checked添加到您的复选框。

<?php

// Check the presence of the index in $_GET and if it is an array to avoid errors with in_array().
$marca = isset($_GET['marca']) && is_array($_GET['marca']) 
       ? $_GET['marca'] : [];
?>

<form method="get">

 <input type="checkbox" id="amd" class="checkbox-filtro" name="marca[]" 
        value="amd" <?php echo in_array('amd', $marca) ? 'checked' : '' ?>>
 <label for="amd">AMD</label>

 <input type="checkbox" id="evga" class="checkbox-filtro" name="marca[]" 
        value="evga" <?php echo in_array('evga', $marca) ? 'checked' : '' ?>>
 <label for="evga">EVGA</label>

 <input type="checkbox" id="intel" class="checkbox-filtro" name="marca[]" 
        value="intel" <?php echo in_array('intel', $marca) ? 'checked' : '' ?>>
 <label for="intel">Intel</label>

</form>

您的原始PHP代码无效:

if ( isset($_GET['marca']) ) {
  $_GET['marca']; // do nothing
}
elseif ( empty($_GET['marca']) ) {
  $_GET['marca'] = null; // change "empty" to null.
}

因此,在此状态下,您无法确定$_GET['marca']是否已定义或包含您想要的内容。