使用PHP在其他功能之前加载页面时更改复选框状态

时间:2013-10-03 04:51:01

标签: javascript php jquery

好的,我正在做的事情有几个与之相关的部分。

以下是所涉及的步骤:

  1. 我使用PHP加载一个复选框表(有一个包含9行的表(由id从4到12标识)和3列(用值1到3标识))

  2. 加载页面后,复选框的状态需要更改。如果选中某些复选框,则需要禁用其他某些复选框。

  3. 我使用jquery更改函数来查看已选中或取消选中的复选框。在这里,我根据用户选择在步骤2中使用相同的逻辑禁用或启用复选框。

  4. 每次在页面加载后选中或取消选中复选框时,我会生成一个JSON,将其推入一个数组并通过单击提交按钮将其发布到另一个页面。

  5. 所以我对步骤1,3和4很擅长。一旦页面加载,我需要帮助改变复选框的状态。

    一旦页面加载后复选框状态发生变化,我如何获得用于禁用复选框的相同逻辑?

    这是我的JavaScript:

    $(document).ready(function(){
            var obj = {};
            var obj1 = {};
            var array = new Array();
            $("input[type='checkbox']").change(function() {
    
            if((this.id=='5' || this.id=='6' || this.id=='7' || this.id=='8' || this.id=='9' || this.id=='10' || this.id=='11' || this.id=='12') && this.value=='1') {
                    var checkedId = this.id;
                    var checkedOrNot = $(this).is(':checked');
                    $("input[type='checkbox']").each(function() {
                        if(this.id==checkedId && (this.value=='2' || this.value=='3')) {
                            if(checkedOrNot) {
                                $(this).attr("disabled",true);
                            } else {
                                $(this).attr("disabled",false);
                            }
                        }
                    });
                }
    
    
    
            if((this.id=='5' || this.id=='6' || this.id=='7' || this.id=='8' || this.id=='9' || this.id=='10' || this.id=='11' || this.id=='12') && this.value=='2') {
                    var checkedId = this.id;
                    var checkedOrNot = $(this).is(':checked');
                    $("input[type='checkbox']").each(function() {
                        if(this.id==checkedId && (this.value=='1' || this.value=='3')) {
                            if(checkedOrNot) {
                                $(this).attr("disabled",true);
                            } else {
                                $(this).attr("disabled",false);
                            }
                        }
                    });
                }
    
    
    
            if((this.id=='5' || this.id=='6' || this.id=='7' || this.id=='8' || this.id=='9' || this.id=='10' || this.id=='11' || this.id=='12') && this.value=='3') {
                    var checkedId = this.id;
                    var checkedOrNot = $(this).is(':checked');
                    $("input[type='checkbox']").each(function() {
                        if(this.id==checkedId && (this.value=='1' || this.value=='2')) {
                            if(checkedOrNot) {
                                $(this).attr("disabled",true);
                            } else {
                                $(this).attr("disabled",false);
                            }
                        }
                    });
                }
    
    
    
    if(this.id=='4' && this.value=='1') {
        if($(this).is(':checked')) {
                    $("input[type='checkbox']").each(function(){
                if(this.id=='4' && this.value=='1') {
                } else {
                    $(this).attr("disabled",true);
                }
           });
        } else {
             $("input[type='checkbox']").each(function(){
                if(this.id=='4' && this.value=='1') {
                } else {
                    $(this).attr("disabled",false);
                }
            });
        }
    }
    
    
    if(this.id=='4' && this.value=='2') {
        if($(this).is(':checked')) {
                    $("input[type='checkbox']").each(function(){
                if(this.id=='4' && this.value=='2') {
                } else {
                    $(this).attr("disabled",true);
                }
           });
        } else {
             $("input[type='checkbox']").each(function(){
                if(this.id=='4' && this.value=='2') {
                } else {
                    $(this).attr("disabled",false);
                }
            });
        }
    }
    
    
    if(this.id=='4' && this.value=='3') {
        if($(this).is(':checked')) {
                    $("input[type='checkbox']").each(function(){
                if(this.id=='4' && this.value=='3') {
                } else {
                    $(this).attr("disabled",true);
                }
           });
        } else {
             $("input[type='checkbox']").each(function(){
                if(this.id=='4' && this.value=='3') {
                } else {
                    $(this).attr("disabled",false);
                }
            });
        }
    }
       //Other functionality
     });  });
    

    更新

    PHP表是这样的:

    <?php
        foreach($a as $b) {
            if ($s["id"]== $b["c"]) {
                if($b["p"] == "e") {
                            echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="1" checked/></td>';
                }else {
    
                            echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="1"/></td>';
                }   
                if($b["p"] == "r") {
                            echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="2" checked/></td>';
                }else {
                            echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="2"/></td>';
                }
                if($b["p"] == "b") {
                            echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="3" checked/></td>';
                }else {
                            echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="3"/></td>';
                }
            }else {
                echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="1"/></td>';
                echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="2"/></td>';
                echo '<td class="vcenter"><input type="checkbox" id="'.$s["id"].'" value="3"/></td>';
            }
        }
    
    ?>
    

    id值从4到12不等。

    条件如下:

    如果选中第5行到第12行中的任何复选框,则应禁用同一行中的所有其他复选框。

    如果选中第一行中的任何复选框,则应禁用表中的所有其他复选框。

    另一个更新

    因此,复选框将具有以下值:[id:value]

    [4,1]    [4,2]  [4,3]
    [5,1]    [5,2]  [5,3]
    [6,1]    [6,2]  [6,3]
    [7,1]    [7,2]  [7,3]
    [8,1]    [8,2]  [8,3]
    [9,1]    [9,2]  [9,3]
    [10,1]   [10,2]  [10,3]
    [11,1]   [11,2]  [11,3]
    [12,1]   [12,2]  [12,3]
    

    有各种各样的可能性,因此您可以假设选中了任何复选框。但所有条件都应该成立。

    再次更新:

    $(document).ready(function()
    {
    $("input[type='checkbox']").each(function() { 
     if($(this).attr("checked",true))
     {
            var id = mainid; 
            var value = this.value;
            var idn = this.id;
            if(id == "4") {
                $("input[type='checkbox']").each(function() {
                    $(this).attr("disabled",true);
                });
            } else {
                $("input[type='checkbox']").each(function() {
                    if(this.value == value) {
                        $(this).attr("disabled",true);
                        idn = ++id;
                    }
                });
            }
    }
    });
    });
    

1 个答案:

答案 0 :(得分:1)

请使用以下代码供您使用,演示如下:

假设您从数据库中选择了以下值

<?php
    $arrayIds = array("5"=>"1");
    //where 5 is id of the check box and 1 is value
?>
<script>
 $(document).ready(function(){
     <?php foreach($arrayIds as $key => $val ) { ?>
        var id = <?php echo $key; ?>;
        var value = <?php echo $val; ?>;
        var idn = id;
        if(id == "4") {
            $("input[type='checkbox']").each(function() {
                $(this).attr("disabled",true);
            });
        } else {
            $("input[type='checkbox']").each(function() {
                //alert(this.id+"--"+this.value+"--"+id+"--"+value+"--"+idn);
                //if(this.id == idn && this.value == value) {
                if(this.value == value) {
                    $(this).attr("disabled",true);
                    idn = ++id;
                }
            });
        }
     <?php } ?>
 });
</script>

上面的脚本将禁用所有值为1的复选框,即上面的第一行。

如果我们得到以下

<?php
    $arrayIds = array("4"=>"1");
    //where 5 is id of the check box and 1 is value
?>
Above script will disable all the checkboxes found on the page.

hope this will help you complete your work

更新

试试这个

$(document).ready(function(){
    $("input[type='checkbox']").each(function() { 
        if($(this).attr("checked",true))  {
            var id = mainid; 
            var value = this.value;
            var idn = this.id;
            if(id == "4") {
                $("input[type='checkbox']").each(function() {
                    $(this).attr("disabled",true);
                });
            } else {
                $("input[type='checkbox']").each(function() {
                    if(this.value == value) {
                        $(this).attr("disabled",true);
                        idn = ++id;
                    }
                });
            }
        }
    });
});

你需要定义mainid ..