Javascript 如果选中复选框,则只允许选中下一个复选框
我用php函数做了一个表Javascript 如果选中复选框,则只允许选中下一个复选框,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我用php函数做了一个表 <table width='400' border='0' cellpadding='2' cellspacing='0' id='booking'> <tr> <th width='150' align='left'>Start</th> <th width='150' align='left'>End</th> <th width='150' align='left
<table width='400' border='0' cellpadding='2' cellspacing='0' id='booking'>
<tr>
<th width='150' align='left'>Start</th>
<th width='150' align='left'>End</th>
<th width='150' align='left'></th>
<th width='20' align='left'>reserv</th>
</tr>
<tr>
<td> </td><td> </td><td> </td><td> </td>
</tr>
但是我没有让它工作。。我也试过使用“.next”。。。
有人能帮忙吗?使用此代码
$(“.fields”).change(函数(){
var index=$(this.index()+1;
$(“.fields”).attr(“已禁用”,true);
$(“.fields:lt(“+index+”).attr(“禁用”,false);
});代码>
使用此代码
$(“.fields”).change(函数(){
var index=$(this.index()+1;
$(“.fields”).attr(“已禁用”,true);
$(“.fields:lt(“+index+”).attr(“禁用”,false);
});代码>
答案似乎不正确。
您可以选中一些复选框,然后从未选中的复选框中删除复选框,以查看问题所在
在这里,但当您取消选中一个复选框时,之后的所有复选框都将被取消标记
如果您想取消选中剩余的部分,那么使用注释部分
var字段=$(“.fields”);
fields.change(函数(){
Array.prototype.reduce.call(字段、函数(prev、curr){
curr.disabled=!prev.checked | | prev.disabled;
/*
如果要取消选中“重新定义”,请使用此选项,而不是上面的行:
当前选中=当前选中?当前选中:false;
当前已禁用=!上一个已选中;
*/
返回货币;
});
});
字段。更改()代码>
复选框
复选框
复选框
复选框
复选框
答案似乎不正确。
您可以选中一些复选框,然后从未选中的复选框中删除复选框,以查看问题所在
在这里,但当您取消选中一个复选框时,之后的所有复选框都将被取消标记
如果您想取消选中剩余的部分,那么使用注释部分
var字段=$(“.fields”);
fields.change(函数(){
Array.prototype.reduce.call(字段、函数(prev、curr){
curr.disabled=!prev.checked | | prev.disabled;
/*
如果要取消选中“重新定义”,请使用此选项,而不是上面的行:
当前选中=当前选中?当前选中:false;
当前已禁用=!上一个已选中;
*/
返回货币;
});
});
字段。更改()代码>
复选框
复选框
复选框
复选框
复选框
最后出现正确答案(似乎是所选答案:):
$(“tr.fields”).change(函数(){
console.clear();
$('.fields').attr('disabled',false);
var checkedItems=$(“.fields:checked”);
如果(!checkedItems.length)
返回;
var checkedDices=checkedItems.map(函数(){
返回$(this.closest('tr').index();
});
var lastInRow=Array.prototype.reduce
.调用(选中的骰子、函数(p、c){
返回(c>p+1)?p:c;
});
$(“tr:gt(“+(lastInRow+1)+”)字段)
.attr(“禁用”,真实);
/*如果您想在上次检查之前禁用项目,可以添加此选项*/
//$(“tr:lt(“+(lastInRow)+”).fields”).attr(“禁用”,true);
});代码>
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
最后,正确答案出现了(似乎是所选答案:):
$(“tr.fields”).change(函数(){
console.clear();
$('.fields').attr('disabled',false);
var checkedItems=$(“.fields:checked”);
如果(!checkedItems.length)
返回;
var checkedDices=checkedItems.map(函数(){
返回$(this.closest('tr').index();
});
var lastInRow=Array.prototype.reduce
.调用(选中的骰子、函数(p、c){
返回(c>p+1)?p:c;
});
$(“tr:gt(“+(lastInRow+1)+”)字段)
.attr(“禁用”,真实);
/*如果您想在上次检查之前禁用项目,可以添加此选项*/
//$(“tr:lt(“+(lastInRow)+”).fields”).attr(“禁用”,true);
});代码>
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
这
是一个
测试
明确说明这是什么意思:“我做了10次”-我不确定你做了10次哪个部分。张贴完整的HTMLi希望这是更好的明确这意味着什么:“这我做了10次”-我不知道哪一部分你做了10次。发布完整的HTMLi希望这是更好的谢谢,我已经尝试过了,但是现在只允许第一个复选框检查所有其他地方disabled@joergi1988但它在片段中工作。它在您的本地?@joergi1988中不起作用。如果它禁用了代码上的所有复选框,您可以使用var index=$(this).index()+2
。就像在洛卡尔一样,它不起作用。我也试过+2。我检查的任何内容都只允许第一个,第一个和第二个都是+2@joergi1988,现在有什么问题吗?谢谢,我已经尝试过了,但是现在只允许第一个复选框检查所有其他位置disabled@joergi1988但它在片段中工作。它在您的本地?@joergi1988中不起作用。如果它禁用了代码上的所有复选框,您可以使用var index=$(this).index()+2
。就像在洛卡尔一样,它不起作用。我也试过+2。我检查的任何东西都只允许第一个,第一个和下一个都是+2@joergi1988现在有问题了吗?太好了!但是,我如何才能将此代码更改为->我喜欢选中任何复选框并仅使用此选项
<tr>
<td>" . $start . "</td>\r\n
<td>" . date("H:i:s", $finish_time) . "</td>\r\n
<td>" . $this->cost_currency_tag . number_format($this->cost_per_slot, 2) . "</td>
<td width='110'>
<input data-val='".$start."-".date("H:i:s", $finish_time)."' class='fields' type='checkbox'>
</td>
</tr>";
$('.fields input[type=checkbox]').click(function(){
var obj = $(this).siblings('input[type=text]');
obj.attr('disabled', !obj.attr('disabled'));
})