JQuery UI日期选择器不会禁用

时间:2012-08-03 03:44:33

标签: jquery asp.net jquery-ui webforms

需要帮助。我无法在jquery中禁用我的日期选择器。我已经做了我的研究,但无济于事。下面是不启用/禁用datepicker的代码。 [增订]

    <script type="text/JavaScript">
    function pageLoad() {

        $(function () {
            $('#<%=TextBox_EventStartDate.ClientID %>').datepicker({
                showOn: 'button',
                buttonImage: '../Images/CalendarIcon1.gif',
                changeMonth: true,
                changeYear: true,
                buttonImageOnly: true,
                dateFormat: 'dd/mm/yy'
            });

        });

        $(function () {
            $('#<%=TextBox_EventEndDate.ClientID %>').datepicker({
                showOn: 'button',
                buttonImage: '../Images/CalendarIcon1.gif',
                changeMonth: true,
                changeYear: true,
                buttonImageOnly: true,
                dateFormat: 'dd/mm/yy'
            });
        });

        $("#<%=CheckBox_PayEvent.ClientID %>").click(function () {
            if ($("#<%=CheckBox_PayEvent.ClientID %>").is(":checked")) {
                $("#<%=TextBox_EventStartDate.ClientID %>").attr('readonly', true);
                $("#<%=TextBox_EventStartDate.ClientID %>").datepicker("disable");

                $("#<%=TextBox_EventEndDate.ClientID %>").attr('readonly', true);
                $("#<%=TextBox_EventEndDate.ClientID %>").datepicker("disable");
            }
            else {
                $("#<%= TextBox_EventStartDate.ClientID %>").attr('readonly', false);
                $("#<%= TextBox_EventStartDate.ClientID %>").datepicker("enable");

                $("#<%= TextBox_EventEndDate.ClientID %>").attr('readonly', false);
                $("#<%= TextBox_EventEndDate.ClientID %>").datepicker("enable");
            }
        });
    }

</script>

感谢您的帮助!

6 个答案:

答案 0 :(得分:4)

对我有用的两种方式:

$( "#datepicker" ).datepicker().datepicker('disable'); //disable [not disabled]
or .datepicker("disable");

没有其他方法适合我:

.datepicker("disabled"); 
.dpSetDisabled(false);
.datepicker( "option", "disabled", true );

我使用jQuery 1.9

答案 1 :(得分:2)

这个答案有点晚了,但如果这对其他人有帮助,我偶然发现了同样的问题,在线发布的常见解决方案 .datepicker(“禁用”) 对我不起作用

我查看了datePicker源代码并找到了以下内容,这对我有用。也许正确答案取决于版本。

禁用控制

$("#<%= TextBox_EventStartDate.ClientID %>").dpSetDisabled(true); 

启用控制

$("#<%= TextBox_EventStartDate.ClientID %>").dpSetDisabled(false); 

答案 2 :(得分:1)

尝试将该功能放入禁用逻辑中。例如,我有一种情况,如果附加的文本框被禁用,我希望datepicker消失,如下所示:

 $(document).ready(function () {
    //Turn off datepicker if the textbox has been disabled.
    if(document.getElementById('<%=txtStartDate.ClientID%>').disabled == true){
        $("#txtStartDate").datepicker('disable');
    }
    else { // Otherwise, enable and set up the .datepicker function 
        $("#txtStartDate").datepicker('enable');

        // .datepicker function goes here
        $('#<%=txtStartDate.ClientID%>').datepicker({
        showOn: "button", 
        buttonImage: "/Admin/Images/calendar.gif", 
        buttonImageOnly: true,
        }); 
    }      
});

我知道这篇文章很老,但希望有所帮助。

答案 3 :(得分:0)

尝试

$("#<%= TextBox_EventStartDate.ClientID %>").datepicker("disable");

答案 4 :(得分:0)

使用({disabled:true})肯定不起作用,datepicker(“禁用”)就是这样做的。

您确定是否符合条件语句并且正在触发click事件;你确定代码正在运行吗?

是否有可能空间被服务器端代码回显,因此传递给JQuery的ID是这样的:“#ElementID”?

答案 5 :(得分:0)

我理解的原因是当您选中/取消选中复选框时,它会回发页面并再次将日期选择器设置为文本框。 试试这个

    <script type="text/JavaScript">
    function pageLoad() {

        $(function () {
            $('#<%=TextBox_EventStartDate.ClientID %>').datepicker({
                showOn: 'button',
                buttonImage: '../Images/CalendarIcon1.gif',
                changeMonth: true,
                changeYear: true,
                buttonImageOnly: true,
                dateFormat: 'dd/mm/yy'
            });

        });

        $(function () {
            $('#<%=TextBox_EventEndDate.ClientID %>').datepicker({
                showOn: 'button',
                buttonImage: '../Images/CalendarIcon1.gif',
                changeMonth: true,
                changeYear: true,
                buttonImageOnly: true,
                dateFormat: 'dd/mm/yy'
            });
        });

        $("#<%=CheckBox_PayEvent.ClientID %>").click(function () {
            if ($("#<%=CheckBox_PayEvent.ClientID %>").is(":checked")) {
                $("#<%=TextBox_EventStartDate.ClientID %>").attr('readonly', true);
                $("#<%=TextBox_EventStartDate.ClientID %>").datepicker("disable");

                $("#<%=TextBox_EventEndDate.ClientID %>").attr('readonly', true);
                $("#<%=TextBox_EventEndDate.ClientID %>").datepicker("disable");
            }
            else {
                $("#<%= TextBox_EventStartDate.ClientID %>").attr('readonly', false);
                $("#<%= TextBox_EventStartDate.ClientID %>").datepicker("enable");

                $("#<%= TextBox_EventEndDate.ClientID %>").attr('readonly', false);
                $("#<%= TextBox_EventEndDate.ClientID %>").datepicker("enable");
            }
            return false; //This line will stop the postback to occur
        });
    }

</script>