如何在 jQuery 中的互斥复选框上实现单击事件
How to implement a click event on mutually exclusive checkboxes in jQuery?
我有两个复选框:
<input id="outside" type="checkbox" value="1" data-gid="41820122" />
<input id="inside" type="checkbox" value="1" data-gid="41820122" />
我使它们与以下方面相互排斥:
$(function(){
//mutually exclusive checkboxes
$("input[data-gid]").click(function(){
var gid = $(this).attr('data-gid');
var fid = $(this).attr('id');
var checkboxes = $("input[data-gid=" + gid + "][id!=" + fid + "]");
checkboxes.attr("checked", false);
});
});
这工作正常。 但我也想在"内部"复选框中添加额外的点击功能。 我希望它在同一表单上启用/禁用文本区域,所以我这样做了:
$('#application_inside').click(function() {
if ($(this).is(':checked')) {
return $('textarea').removeAttr('disabled');
} else {
return $('textarea').attr('disabled', 'disabled');
}
});
因此,如果选中"内部"复选框,则将启用文本区域,如果未选中,则应禁用文本区域。
问题是,如果选中了"内部"复选框,然后用户选中了"外部"复选框,则"内部"将变为未选中状态(应该如此),但文本区域仍处于启用状态。 这似乎是因为用户从未实际单击过"内部"复选框。
我尝试使用以下方法解决此问题:
$(function(){
//mutually exclusive checkboxes
$("input[data-gid]").click(function(){
var gid = $(this).attr('data-gid');
var fid = $(this).attr('id');
var checkboxes = $("input[data-gid=" + gid + "][id!=" + fid + "]");
checkboxes.attr("checked", false);
checkboxes.triggerHandler("click"); //new code to fire any click code associated with unchecked boxes
});
});
但这只会使浏览器陷入循环,因为两个不同的点击事件最终会相互调用。
如何保留互斥代码,同时仍允许启用/禁用"内部"复选框的代码工作?
您可以创建一个在单击#application_inside 时触发的自定义事件。此外,由于排他性,当您取消选中其他框时,您将触发此自定义事件。
下面是一个示例:http://jsfiddle.net/gs78t/2/
你可以尝试这样的东西
var insideChanged = function() {
if ($('#inside').is(':checked')) {
return $('textarea').removeAttr('disabled');
} else {
return $('textarea').attr('disabled', 'disabled');
}
};
$('#application_inside').click(insideChanged);
$(function(){
//mutually exclusive checkboxes
$("input[data-gid]").click(function(){
var gid = $(this).attr('data-gid');
var fid = $(this).attr('id');
var checkboxes = $("input[data-gid=" + gid + "][id!=" + fid + "]");
checkboxes.attr("checked", false);
insideChanged(); //new code to fire any click code associated with unchecked boxes
});
});
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 如何实现复选框或面向类别的照片库
- 如何在 emberjs 中使用复选框实现多个过滤器
- 使用 Json 数据源在数据表中实现复选框选择
- 如何为未知数量的复选框实现全选按钮
- 如何在免费的jqGrid 4.13.0中实现单击复选框
- 如何在 jQuery 中的互斥复选框上实现单击事件
- React-如何实现复选框
- javascript实现“;“全选”;复选框在IE中不起作用
- JqGrid复选框字段实现失败
- 如何在php中实现多个复选框
- 如何在knockoutjs中实现复选框依赖关系
- 用javascript在JSP中实现一个全选复选框
- 如何实现渐变效果的CSS复选框
- 3个动态复选框可实现通信
- 在Rails中实现AJAX调用复选框来更新数据库
- 如何实现只有一个复选框被选中的功能到复选框列表