如何保存保持选中的复选框?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保存保持选中的复选框?相关的知识,希望对你有一定的参考价值。
我正在做一个web应用项目(clinic & laboratory),它是关于发送测试的.我用下面的代码先选择测试类别,然后再选择与这个类别相关的测试名称.但是当我移动到另一个类别时,旧的选定的输入将被重置.在将其发送到数据库之前,谁来暂时保存它们? 我在ajax方面还是新手.
<?php
// Dashboard page
include('CONFIG.PHP');
$query = "SELECT * FROM `test_categories` ORDER BY `test_categories`.`CATEGORY_ID` DESC";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
?>
<div class="">
<label>
<input type="checkbox" class="common_selector category" value="<?php echo $row['CATEGORY_NAME']; ?>">
<?php echo $row['CATEGORY_NAME']; ?></label>
</div>
<?php
}
?>
===============================================
<script>
$(document).ready(function(){
filter_data();
function filter_data()
{
$('.filter_data').html('<div id="loading" style="" ></div>');
var action = 'fetch_data';
var brand = get_filter('category');
$.ajax({
url:"FUNCTIONS.PHP",
method:"POST",
data:{action:action, category:category},
success:function(data){
$('.filter_data').html(data);
}
});
}
function get_filter(class_name)
{
var filter = [];
$('.'+class_name+':checked').each(function(){
filter.push($(this).val());
});
return filter;
}
$('.common_selector').click(function(){
$('input').not(this).prop('checked', false);
filter_data();
});
});
</script>
==========================================
// FUNCTIONS PAGE
if(isset($_POST["action"]))
{
include 'CONFIG.PHP';
$query = "";
if(isset($_POST["category"]))
{
$category_filter = implode("','", $_POST["category"]);
$query .= "
SELECT * FROM `tests` WHERE TEST_CATEGORY = ('".$category_filter."') ORDER BY `tests`.`TEST_ID` DESC
";
}
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$total_row = $statement->rowCount();
$output = '';
if($total_row > 0)
{
foreach($result as $row)
{
$output .= "
<div class='TEST'>
<input id='toggle". $row['TEST_ID']."' name='REQUESTED_TEST[]' type='checkbox' value='" . $row['TEST_NAME'] . "'>
<label for='toggle". $row['TEST_ID']."'>" . $row['TEST_NAME'] . "</label>
</div>
";
}
}
else
{
$output = '<h3 class="text-center">'. LANG('NO_DATA_FOUND').'</h3>';
}
echo $output;
}
答案
根据你的要求,你必须做以下改变。
在函数文件中添加onchange事件
<input class='selected_test' id='toggle". $row['TEST_ID']."' name='REQUESTED_TEST[]' type='checkbox' value='toggle" . $row['TEST_ID'] . "' onchange="updatetests()">
在Dashboard文件中添加该javascript功能
function updatetests(){
var oldval = $('input[name=seltests]').val();
var seltests = [];
if( oldval != "" ) {
seltests = $('input[name=seltests]').val().split(',');
}
jQuery.each( jQuery('.selected_test:checked'), function( i, val ) {
seltests.push($(this).val());
});
seltests = seltests.filter((v, i, a) => a.indexOf(v) === i);
$('input[name=seltests]').val( seltests.join(",") );
}
以上是关于如何保存保持选中的复选框?的主要内容,如果未能解决你的问题,请参考以下文章
oracle表单如何在execute_query之后保持复选框被选中
如何在使用 jquery 刷新页面后保持复选框在模式中的选中状态?