我的asp控件设置如下:
<asp:CheckBoxList runat="server" ID="toppingsCheckBoxList">
<asp:ListItem type="checkbox" name="toppings" value="pickles" class="toppings">pickles</asp:ListItem>
<asp:ListItem type="checkbox" name="toppings" value="lettuce" class="toppings">lettuce</asp:ListItem>
<asp:ListItem type="checkbox" name="toppings" value="tomato" class="toppings">tomato</asp:ListItem>
<asp:ListItem type="checkbox" name="toppings" value="none" ID="none">none</asp:ListItem>
</asp:CheckBoxList>
并且一直试图通过Jquery禁用复选框,就像我过去使用标准HTML控件一样,但是使用asp控件并不是那么容易。
这是我迄今为止的努力:
//Jquery for topping disabling/enabling
$(document).ready(function () {
//disable toppings when none is selected
$('#none').click(function () {
if ($("#none").selector) {
$(".toppings").prop("disabled", true);
}else
$(".toppings").prop("disabled", false);
});
//disable none when a topping is selected
$(".toppings").click(function () {
$(".toppings").each(function (index, element) {
if (element.selector && !$("#none").selector) {
$("#none").prop("disabled", true);
}
});
});
//enable none when no topping is selected
$(".toppings").click(function () {
var count = 0;
$(".toppings").each(function (index, element) {
if (!element.selector && index in [0, 1, 2]) {
count++;
}
});
if (count == 3) {
$("#none").prop("disabled", false);
}
});
});
正如您所看到的,我已经发现我可以将.checked更改为.selector以查看已检查的内容,但实际上将listitem复选框更改为禁用类名称证明是困难的,我可能只是错过了简单解决方案,因为我对asp.net不是很有经验。
谢谢!
答案 0 :(得分:0)
我即将离开工作,所以我没有足够的时间尝试这个,但你可以试试这个如何实现它:
$('#none').on("change", function () {
if($('#none').attr("disabled") == false){
$(".toppings").attr("disabled", true);
}
else
$(".toppings").attr("disabled", false);
});
答案 1 :(得分:0)
抱歉,我误解了你的问题。它实际上非常简单:
$(document).ready(function () {
$('input:checkbox').click(function () {
if ($('#none').is(':checked')) {
$('.toppings').attr('disabled', 'disabled');
} else {
$('.toppings').removeAttr('disabled');
}
if ($('.toppings').is(':checked')) {
$('#none').attr('disabled', 'disabled');
} else {
$('#none').removeAttr('disabled');
}
});
});