我希望有一个jquery函数,当单击任何复选框时将激活该函数,并且根据单击的复选框的值字段,它将禁用或启用其他复选框。
到目前为止,我有:
$(function () {
$('input [type="checkbox"]').click(function () {
});
});
好的,所以我取得了一些进展......但它仍然没有用。
<script type="text/javascript">
$(function () {
$(':checkbox').click(function () {
$value = $(this).attr('value');
if ($(this).is(':checked'))
{
switch ($value)
{
case "BLIPA":
$(':checkbox[value*="B"]').attr('disabled', true);
}
}
else
{
$(':checkbox').each(function()
{
}
}
});
});
我犯过什么错误吗?
编辑:
好的,我已经解决了。这是解决方案:
<script type="text/javascript">
$(function () {
$("input[type='checkbox']").click(function () {
var value = $(this).attr('value');
if ($(this).is(':checked')) {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', true);
$(':checkbox[value~="' + value + '"]').attr('disabled', false);
}
else {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', false);
}
});
function FindModuleRules(string) {
var modules = new Array();
var bRegex = /B/;
var lRegex = /L/;
var aRegex = /A/;
if (string.search(bRegex) != -1)
modules[0] = "B";
else
modules[0] = "X";
if (string.search(lRegex) != -1)
modules[1] = "L";
else
modules[1] = "X";
if (string.search(aRegex) != -1)
modules[2] = "A";
else
modules[2] = "X";
return modules;
}
});
答案 0 :(得分:1)
首先,input
和[type="checkbox"]
之间不能有空格,因为它会在其他输入元素(无效)中查找复选框。
类似
$('input[type="checkbox"]').click(function () {
$('otherselector').prop('disabled', this.checked);
});
答案 1 :(得分:1)
如果没有看到完全你如何设置标记,就很难告诉你需要做什么。但是,她是jsfiddle来说明:
HTML
<input type="checkbox" id="ckall" /> Check 'em all!
<ul>
<li><input type="checkbox" /> Item 1</li>
<li><input type="checkbox" /> Item 2</li>
<li><input type="checkbox" /> Item 3</li>
<li><input type="checkbox" /> Item 4</li>
<li><input type="checkbox" /> Item 5</li>
</ul>
JS
$("input[type='checkbox']").click(function() {
$("ul :checkbox").attr("checked", $(this).is(":checked"));
});
根据您的标记以及您希望做的完全将决定您的jQuery选择器。但是,我假设您要创建一个“全部检查”类型的复选框。如果是这样,您将在小提琴中看到检查所有复选框事件,然后选择某个容器元素中的所有复选框。如果您不这样做,那么您最终可能会更改选中所有复选框的状态。
答案 2 :(得分:0)
$('input [type="checkbox"]').click(function () {
if($(this).is(':checked')) {
//do stuff
}
})
答案 3 :(得分:0)
我已经回答了这个问题。感谢您的帮助。
<script type="text/javascript">
$(function () {
$("input[type='checkbox']").click(function () {
var value = $(this).attr('value');
if ($(this).is(':checked')) {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', true);
$(':checkbox[value~="' + value + '"]').attr('disabled', false);
}
else {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', false);
}
});
function FindModuleRules(string) {
var modules = new Array();
var bRegex = /B/;
var lRegex = /L/;
var aRegex = /A/;
if (string.search(bRegex) != -1)
modules[0] = "B";
else
modules[0] = "X";
if (string.search(lRegex) != -1)
modules[1] = "L";
else
modules[1] = "X";
if (string.search(aRegex) != -1)
modules[2] = "A";
else
modules[2] = "X";
return modules;
}
});
我使用FindModuleRule函数对所有值字符串进行排序,并选出仅出现在某些值中的关键字符,如“A”,“L”或“B”(如果没有找到)然后我分配给'X '在任何值字符串中都找不到。然后,我使用该字符选择包含该字符的值的所有复选框,并依次打开或关闭它们,然后将单击的复选框切换到适当的状态。