如何使用codeigniter将选中和未选中复选框的值更新为表

Posted

技术标签:

【中文标题】如何使用codeigniter将选中和未选中复选框的值更新为表【英文标题】:How to update the value of checked and unchecked checkbox to table using codeigniter 【发布时间】:2020-07-21 15:06:53 【问题描述】:
var add_dynastfileds = function()

    CheckedFileds = [];
    UncheckedFileds = [];

    $(".DynFileds").each(function() 
        //console.log($(this).val());
        if ($(this).is(":checked")) 
            if(CheckedFileds.indexOf($(this).val())==-1)
                    CheckedFileds.push($(this).val());                  
                
         else 
                if(UncheckedFileds.indexOf($(this).val())==-1)
                    UncheckedFileds.push($(this).val());                  
                
        
    );
    $.post("<?=base_url()?>asset/addDynFields/",CheckedFileds:CheckedFileds,UncheckedFileds:UncheckedFileds,function(result)
    
        //console.log(result);
        $.gritter.add(
                        title: "Fields updated successfully ",
                        text: "",
                        time: 2000
        );
    );


<div class="panel-group">
    <div class="panel panel-default">
        <div class="row">
<?
    foreach($dynast_fields as $dynfileds)
        if(($dynfileds['display_name'] == 'Title') && 
            ($dynfileds['add_to_listing'] =='1'))
        
            $styleClass = 'disabled="disabled"';
            $checked = "checked";
        else
            $styleClass = '';
            $checked = "";
        
?>
                    <div class="col-md-1"></div>
                    <input type="checkbox" <?=$styleClass?> <?=$styleClass?> class="DynFileds" name="dynfileds<?=$dynfileds['rec_no']?>" id="dynfileds<?=$dynfileds['rec_no']?>" value="<?=$dynfileds['rec_no']?>" <? if($dynfileds['add_to_listing'] == '1')  echo "checked";  ?>/>
                    <span style="font-size:12px;font-family: Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;"><?=$dynfileds['display_name']?></span>
                    <br/>
<?php 
    
?>
        </div>
    </div>
    <span id='dup_checkdiv' style="display:none;" class="text-danger"></span>
    <br/>
    <div class="popover-footer" style="align:center;">
        <div class="row">
            <div class="col-md-3"></div>
            <div class="col-md-3">
                <a href="javascript:;" style="font-family: Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;" class="btn btn-info btn-sm" onclick="add_dynastfileds()">Save</a>
            </div>
        </div>
    </div>
</div>

public function addDynFields()

    $checkedfileds = $_POST['CheckedFileds'];
    $uncheckedFileds = $_POST['UncheckedFileds'];

    $this->db->update('pm1asset_dynamic_fields',array('add_to_listing' =>0));

    if(!empty($checkedfileds))
    
        for($i = 0; $i < count($checkedfileds); $i++)
        
            $data = array(
            'add_to_listing' =>1
            );
            $this->db->set($data);

            $this->db->where('rec_no',$checkedfileds[$i]);
            $this->db->update('pm1asset_dynamic_fields');
        
     


在这里,我编写了一些代码来更新选中和未选中复选框的值,这是第一次通过将值“0”上传到未选中并将值“1”上传到选中复选框,但在页面之后工作正常重新加载,如果我要通过取消选中先前选中的复选框来更新值“0”,它不会更新,因为刷新页面后,复选框值仍处于选中状态。出现这个问题是因为我在 div 标签的复选框中给出了条件,但我也需要这个条件。有没有什么不同的写法。哪位大神能告诉我怎么解决这个问题。

【问题讨论】:

你检查过post数据是否包含正确的id并且字段是一个数组吗? where_in 期望值是一个数组(或单个值)。 感谢您的回复,我已经通过发出警报进行了检查,对于选中的复选框,它在数组中给出了正确的值,但对于未选中的,它给出了整个复选框的值。我不知道为什么 谁能帮我解决这个问题.. 【参考方案1】:

试试这样的

$('.DynFileds:checked').each(function() 
   CheckedFileds.push(this.value);
);
$('.DynFileds:not(:checked)').each(function() 
   UncheckedFileds.push(this.value);
);

更多

find all unchecked checkbox in jquery use jQuery to get values of selected checkboxes

【讨论】:

谢谢您的回复先生,我仍然只得到以前的方法..

以上是关于如何使用codeigniter将选中和未选中复选框的值更新为表的主要内容,如果未能解决你的问题,请参考以下文章

发布选中和未选中的复选框

如何处理extjs4中复选框上的选中和未选中事件?

在codeigniter中的数据库中设置值时如何将复选框显示为选中状态

Jquery 复选框选中和未选中事件

JQUERY:获取选中和未选中复选框的 id

如果提交表单时未选中复选框,如何将布尔值更新为 0