2012-08-03 244 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, 
     }); 
    }  
}); 

我知道後是舊的,但希望幫助。

相關問題