在复选框上单击禁用/启用datepicker

时间:2012-04-04 10:48:26

标签: jquery datepicker

这是我的代码:

$("#myCheckBox").click(function () {
        if (!$(this).is(':checked')) {
            $('#txtDateFrom').attr('readonly', true);
            $('#txtDateTo').attr('readonly', true);
            $('#txtDateFrom').val('01/01/2012');
            $('#txtDateTo').val('31/12/2012');
            $('#txtDateFrom').datepicker(this.checked ? "disable" : "disable");
            $('#txtDateTo').datepicker(this.checked ? "disable" : "disable");
        }
        else {
            $('#txtDateFrom').attr('readonly', false);
            $('#txtDateTo').attr('readonly', false);
            $('#txtDateFrom').datepicker(this.checked ? "disable" : "enable");
            $('#txtDateTo').datepicker(this.checked ? "disable" : "enable");
            $('#txtDateFrom').datepicker({ dateFormat: 'dd/mm/yy' });
            $('#txtDateTo').datepicker({ dateFormat: 'dd/mm/yy' });
        }
    });

取消选中复选框并再次检查后,文本框仍然处于禁用状态。为什么呢?

2 个答案:

答案 0 :(得分:3)

这可能是你的问题:

$('#txtDateFrom').datepicker(this.checked ? "disable" : "disable");
$('#txtDateTo').datepicker(this.checked ? "disable" : "disable");

应该是这样的:

$('#txtDateFrom').datepicker(this.checked ? "disable" : "enable");
$('#txtDateTo').datepicker(this.checked ? "disable" : "enable");

答案 1 :(得分:1)

尝试.removeAttr(),而不是通过.attr()将readonly设置为false。例如:

$('#txtDateFrom').removeAttr('readonly');