如何保持复选框在发布功能后保持检查状态

时间:2013-04-04 03:14:46

标签: javascript codeigniter post checkbox checked

我的复选框在codeigniter javascript中执行后期操作后返回false值。

以下是我的函数subjectid_change的代码:

function subjectid_change(id, subjectid){
    setValue(id, subjectid);
    var field = '#ch' + id;
    set_credithour(field, subjectid);
}

$("select[name^=subjectid]").change(function(){
var subjectid = $(this).val();
set_credithour($(this).parent('td').find('input'), subjectid);
$(this).parent().find('input').attr('name', 'credithour['+subjectid+']');
$(this).parent().next()find('input').attr('name', 'gradepoint['+subjectid+']');
$(this).parent().next().next().find('input').attr('name', 'cgpacalc['+subjectid+']');
});

我尝试了e.preventDefault();,但它阻止我更改之前的值。 我也尝试使用.prop("checked"),结果仍然相同。

此功能的代码为subjectid_change:

function set_credithour(field, subjectid){
    $.post('<?php echo site_url('academic/ajax_get_subject_credit'); ?>', {subjectid:subjectid}, 
    function(response){
        if(response.success){
          $(field).val(response.value);
        } else{
          alert('The subject you entered has no credit hour.');
        }
    }, 'json');
}

那么,如果我想在执行$.post之后保留复选框,我该怎么办?

在控制器中:

function ajax_get_subject_credit()
{
    $subjectid = $this->input->post('subjectid');
    $this->db->select('subjectid, subjectcredit');
    $this->db->where('subjectid',$subjectid);
    $query = $this->db->get('ref_subject');
    $credithour = $query->row()->subjectcredit;
    $query->free_result();
    $result = $credithour;
    echo json_encode(array('success' => true, 'value' => $result));

}

当我选择主题时,学分会自动填充并单击复选框以同意计算CGPA。但是当我在添加新主题后单击“计算”按钮时,计算过程不会运行,复选框将返回false。所以,我再次单击复选框和计算按钮以使该过程正常工作。这使用户做两次同样的工作。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

   $.post('url',function(){
    $('checkbox').attr('checked','checked');
    /*here go on with all your stuffs*/

    });

答案 1 :(得分:0)

这是我的结果:

我发现帖后有一些错误,即复选框自动重命名为gradepoint而不是cgpacalc。

var subjectid = $(this).val();
    set_credithour($(this).parent('td').next().find('input'), subjectid);
    $(this).parent().find('input[name^=subjectstudentid]').attr('name', 'subjectstudentid['+subjectid+']');
    $(this).parent().parent().find('input[name^=credithour]').attr('name', 'credithour['+subjectid+']');
    $(this).parent().parent().find('input[name^=gradepoint]').attr('name', 'gradepoint['+subjectid+']');
    $(this).parent().parent().find('input[name^=cgpacalc]').attr('name', 'cgpacalc['+subjectid+']');