2012-08-03 155 views
0

需要帮助。我不能禁用jquery中的日期选择器。我已经做了我的研究,但无济于事。以下是不启用/禁用datepicker的代码。 [已更新]JQuery UI日期选择器未禁用

<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> 

感谢您的帮助!

+0

CheckBox_PayEvent是否有autopostback = true? – 2012-08-03 05:53:46

+0

是的,它被设置为true。 – Musikero31 2012-08-03 06:18:07

回答

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> 
+0

它仍然行为相同,但复选框不显示复选框。我也做了一个断点,它仍然重新创建一个新的日期选择器。 – Musikero31 2012-08-03 07:06:50

0

尝试

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

仍然无法正常工作。 – Musikero31 2012-08-03 04:04:36

+0

它应该工作。看http://jsfiddle.net/uJRWX/3/ – Willy 2012-08-03 04:09:32

+0

我试过这个,但它仍然无法正常工作。我不知道我必须做些什么才能停用。 – Musikero31 2012-08-03 04:19:39

0

使用({禁用:真正})肯定是不行的,日期选择器( “禁止”),就是将做到这一点。

您确定符合条件语句并正在触发点击事件;你确定代码正在运行?

是否有可能空间被服务器端代码回显,以便传递给JQuery的ID如下所示:“#ElementID”?

+0

我测试了我的条件语句,它正在工作。但是,日期选择器图像按钮被禁用,然后变为启用。 我会更新我的代码,让您看到更改。 – Musikero31 2012-08-03 04:34:33

+0

这就是我正在看的,以防万一:http://jsfiddle.net/WeSPQ/1/ – 2012-08-03 04:39:25

+0

这个网页是否在某个地方居住,或者它是一个测试服务器? – 2012-08-03 04:44:34

2

一点点这个答案,但在后期的情况下,这是其他任何人的帮助,我偶然发现了同样的问题和常见的解决方案发布到网上.datepicker(“禁止”)做不为我工作要么

我看了datePicker来源,发现以下,这对我有用。也许正确的答案是依赖于版本的。

要禁用控制

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

为了能够控制

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

2种方式是为我工作:

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

没有其他方法对我的作品:

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

我使用jQuery 1.9

1

尝试将函数放入禁用逻辑中。例如,我有一个情况我想如果附加的文本框被禁用,看起来像这样的日期选择了:

$(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, 
     }); 
    }  
}); 

我知道后是旧的,但希望帮助。

相关问题