好的,我正在做的事情有几个与之相关的部分。
以下是所涉及的步骤:
我使用PHP加载一个复选框表(有一个包含9行的表(由id从4到12标识)和3列(用值1到3标识))
加载页面后,复选框的状态需要更改。如果选中某些复选框,则需要禁用其他某些复选框。
我使用jquery更改函数来查看已选中或取消选中的复选框。在这里,我根据用户选择在步骤2中使用相同的逻辑禁用或启用复选框。
每次在页面加载后选中或取消选中复选框时,我会生成一个JSON,将其推入一个数组并通过单击提交按钮将其发布到另一个页面。
所以我对步骤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;
}
});
}
}
});
});
答案 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 ..