我有这组javascript代码,允许我根据我的选择禁用/启用复选框。
下面的第一组代码允许我将默认值设置为"选择全部"当"选择全部"并禁用其余部分在第一页加载期间检查但不在回发时检查。在回发中不这样做的原因是因为例如如果用户没有选中复选框列表2中的任何复选框,我想提示用户选中复选框列表2中的至少一个复选框,但不想先覆盖用户选择在回发时使用默认"全选"在checkboxlist1和checkboxlist2中。
$(function () {
if($("#hidden").val() == "")
{
$("#Checkboxlist1 :checkbox").attr('disabled', 'disabled');
$("#Checkboxlist1 :checkbox[value='Select All']").removeAttr('disabled');
$("#Checkboxlist1 :checkbox[value='Select All']").prop("checked", true);
$("#Checkboxlist2 :checkbox").attr('disabled', 'disabled');
$("#Checkboxlist2 :checkbox[value='Select All']").removeAttr('disabled');
$("#Checkboxlist2 :checkbox[value='Select All']").prop("checked", true);
$("#hidden").val("set");
}
});
$(function () {
$("#Checkboxlist2 :checkbox").change(function () {
var ischecked = $(this).is(":checked");
var val = $(this).val();
//alert(val);
if (val == "Select All") {
if (ischecked) {
$("#Checkboxlist2 :checkbox").attr('disabled', 'disabled');
$(this).removeAttr('disabled');
$("#Checkboxlist2 :checkbox").prop("checked", false);
$(this).prop("checked", true);
return;
} else {
$("#Checkboxlist2 :checkbox").removeAttr('disabled');
return;
我的问题是:
在回发时,我的检查值会保留但以前禁用的复选框已启用,那么如何在回发时保留其整个状态?
我确实启用了我的复选框列表enableviewstate = true
答案 0 :(得分:0)
我不确定您将$("#hidden")
此值设置为空。
但是,如果您的checkbox
更改事件旨在正确设置所有checkbox
disabled
状态,请在该事件处理程序之后立即调用trigger
事件上的change
方法。
这样的事情。
$("#Checkboxlist2 :checkbox").trigger('change');
像这样
$("#Checkboxlist2 :checkbox").change(function () {
var ischecked = $(this).is(":checked");
var val = $(this).val();
//alert(val);
if (val == "Select All") {
if (ischecked) {
$("#Checkboxlist2 :checkbox").attr('disabled', 'disabled');
$(this).removeAttr('disabled');
$("#Checkboxlist2 :checkbox").prop("checked", false);
$(this).prop("checked", true);
return;
} else {
$("#Checkboxlist2 :checkbox").removeAttr('disabled');
return;
}
}
});
$("#Checkboxlist2 :checkbox").trigger('change');
答案 1 :(得分:0)
只是尝试在document.ready函数中放置一个标志..它可以工作