JQuery - 每行启用/禁用复选框
我有一个查询返回可用服务的表列表,并且每个返回服务的表行有3个复选框 - Book,Send Info,No Thanks。JQuery - 每行启用/禁用复选框
echo '<td align="center">'.'<input type="checkbox" id="ckBook_'.$i.'" name="ckBook['.$i.']"></input>'.'</td>';
echo '<td align="center">'.'<input type="checkbox" id="ckSendInfo_'.$i.'" name="ckSendInfo['.$i.']" class="group1_'.$i.'"></input>'.'</td>';
echo '<td align="center">'.'<input type="checkbox" id="ckNoThanks_" name="ckNoThanks['.$i.']" class="group1_'.$i.'"></input>'.'</td>';
如果在一行的复选框中的一个用户点击,然后在同一行的其他复选框应该被禁用,否则它们应该被启用。我尝试过使用单选按钮,但是Book复选框也会在底部返回一个运行总数,当我使用单选按钮时,它会扰乱总计功能。
我研究过并认为我非常接近解决方案。我修改了我在这个网站上找到的一些代码,但是当第一列复选框(任意一行)被选中时,它目前仅影响第二和第三列。
$(function() {
enable_cb();
$('input[id^=ckBook_]').click(enable_cb);
$('input[id^=ckSendInfo_]').click(enable_cb);
$('input[id^=ckNoThanks_]').click(enable_cb);
});
function enable_cb() {
if (this.checked)
{
$("input.group1_0").attr("disabled", true);
}
else
{
$("input.group1_0").removeAttr("disabled");
$("input.group1_1").removeAttr("disabled");
}
}
试试这个
function enable_cb() {
if ($(this).is(':checked')){
$("input.group1_0").attr("disabled", true);
}else{
$("input.group1_0").attr("disabled", false);
$("input.group1_1").attr("disabled", false);
}
}
UPDATE:
$(':checkbox').click(function(){
var elems = $(this).parents('tr').find(':checkbox');
elems.not($(this)).attr('disabled',$(this).is(':checked'));
});
感谢您的试用!然而,它会产生与以前相同的效果 - 选中任何Book复选框(发送信息或不感谢),然后仅禁用发送信息和不感谢的第一行。我实际上需要这是排除每个返回的行。 – user1172854 2012-01-27 06:04:44
更新了答案..现在试试 – 2012-01-27 07:23:37
这个简单的代码将做到这一点:
// bind a click handler on any of those checkboxes
// withint the table #tableID
$('input[type=checkbox]', '#tableID').click(function(e) {
// 'this' is the clicked checkbox
$(this).closest('tr')
// go to the TR parent and find all checkboxes,
// but exclude myself with .not()
.find('input[type=checkbox]').not(this)
// use .prop() to set special attributes like disabled
.prop('disabled', this.checked);
});
延伸阅读:
谢谢!这工作很棒! – user1172854 2012-01-27 06:08:07
+1如果我正确地阅读问题,我会做的。 (我删除了我的答案。) – nnnnnn 2012-01-27 06:17:01
我添加了一些注释和上下文,以将点击事件绑定到ID为“#tableID”(使用您的表ID更改)的表格中的复选框。 – 2012-01-27 06:17:56
注:输入标签自动关闭标签,你应该写出来''而不是'' – 2012-01-27 06:22:16