jquery - jquery 和 codeigniter 中的 if else 条件检查和取消选中复选框

标签 jquery mysql codeigniter

enter image description here我有一些应用于产品的过滤器。它有一个部分,我通过单击复选框来过滤产品。我为此使用 jquery。问题是当我尝试取消选中复选框时,它显示的结果与以前相同,即使我取消选中它仍然显示已选中。如果未选中复选框,我想重置页面。

请参阅上面的图片,我正在使用复选框来过滤产品,如果我单击任何复选框,它会向我显示一些结果,现在我想取消选中复选框并休息页面。但如果我尝试取消选中它,它仍然显示为已选中

查看代码:

<form action="" method="get">
<?php

    foreach ($tags as $tag) {                           
?>
<div class="checkbox">
<label><input type="checkbox" value="<?= $tag->id ?>" name="tags[]" class="tags" <?= (isset($current_tags) && in_array($tag->id, $current_tags)) ? 'checked="checked"' : '' ?>><?= $tag->tag_name ?></label>
</div>
<?php
}
?>

jquery 代码:

$('.tags').change(function () {
    var current = $(this);
    var tags = [];
    $('.tags').each(function () {
    if ($(this).prop('checked') == true) {
        tags.push($(this).val());
    }
    else {
        resetAll();
    }
    });
    window.location = '<?= current_url() . '?' . (($this->input->get_post('s')) ? 's=' . $this->input->get_post('s') . '&' : '') ?>tags=' + tags.join('-');
});
});

Controller 代码:

if ($this->input->get_post('tags')) {
    $this->data['current_tags'] = explode('-', $this->input->get_post('tags'));
    $filters['deals.tags'] = $this->data['current_tags'];
    $_SESSION['filters_counter'] += 1;      
}

型号代码:

function get($filters = [], $sort_filters = [], $limit = 0, $offset = 0, $sort_filters_mobile = []) {

$this->db->select('deals.*,deals.expiry_date_time,categories.category_name,categories.seo_url as category_seo_url,sub_categories.sub_category_name,sub_categories.seo_url as sub_category_seo_url,stores.store_name,stores.is_direct_link');
$this->db->from('deals');
$this->db->join('categories', 'categories.id=deals.categories_id');
$this->db->join('sub_categories', 'sub_categories.id=deals.sub_categories_id');
$this->db->join('stores', 'stores.id=deals.stores_id');
$this->db->where("deals.status", 1);
$this->db->where("stores.current_status", 'Active');
foreach ($filters as $key => $value) {
    if (is_array($value)) {
    if ($key == 'deals.tags') {
        $cond = array();
        foreach ($value as $key => $val) {
        $cond[] = 'FIND_IN_SET("' . $val . '",deals.tags) != 0';
        }
        $this->db->where('(' . implode(' OR ', $cond) . ')');
    } else {
        $key_array = explode(' ', $key);
        if (isset($key_array[1]) && ($key_array[1] == "!=")) {
        $this->db->where_not_in($key_array[0], $value);
        } else {
        $this->db->where_in($key, $value);
        }
    }
    } elseif ($key == 'deals.deal_title') {
    $this->db->like($key, $value);
    } elseif ($key == 'deals.tags') {
    $this->db->where('FIND_IN_SET("' . $value . '",deals.tags) !=', 0);
    } else {
    $this->db->where($key, $value);
    }
}
foreach ($sort_filters as $key => $value) {
    $this->db->order_by($key, $value);
}
if ($limit != 0) {
    if ($offset != 0) {
    $this->db->limit($limit, $offset);
    } else {
    $this->db->limit($limit);
    }
}
$data = $this->db->get()->result();
if ($data) {
    foreach ($data as $item) 
    if ($item->current_status == 'Active') {
        $item->current_status_bootstrap_class = 'primary';
    } else {
        $item->current_status_bootstrap_class = 'danger';
    }
    if ($item->deal_type == 'DEAL') {
       $item->deal_type_bootstrap_class = 'primary';
        $item->deal_type_text = 'Deal';
    } else {
        $item->deal_type_bootstrap_class = 'success';
        $item->deal_type_text = 'Offer & Coupon';
    }
    $item->image = FILE_UPLOADED_PATH . $item->image;
    }
    return $data;
}
return [];

}

我尝试添加其他条件,但它不起作用。请帮忙!

最佳答案

听不懂你想说什么。但我希望你能从中得到一些想法

$('.tags').change(function () {
    var current = $(this);
    if($(current).prop('checked') == true){
        alert("checked");
    }
    else{
        alert("UN-checked");
        //You should reset your page here or whatever u mean
    }
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" value="1" name="tags[]" class="tags" />
<input type="checkbox" value="2" name="tags[]" class="tags" />
<input type="checkbox" value="3" name="tags[]" class="tags" />
<input type="checkbox" value="4" name="tags[]" class="tags" />
<input type="checkbox" value="5" name="tags[]" class="tags" />

关于jquery - jquery 和 codeigniter 中的 if else 条件检查和取消选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57353085/

相关文章:

javascript - 如何将类添加到最近的元素

mysql - 尝试从 mysql 存储过程获取 Count 单值

javascript - 取消选择所有选项卡 jquery tabselect

javascript - 在 addClass/removeClass 中使用多个变量

php - 从 MySQL 的字符串中解析 HTML 标签

php - 代码点火器 : Routing URL on Codeigniter

php - 从 CodeIgniter 中的 URL 捕获哈希值 (#)

php - Codeigniter session 大小限制

javascript - 如何使用jquery将td集中在表中?

php - CakePHP findList 不返回聚合值