2012-07-17 102 views
1

我正在使用從日期文本框和日曆按鈕。當我點擊日曆按鈕時,我應該從datepicker中選擇日期。jquery datepicker自動關閉

以下是我的代碼

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" 
    rel="stylesheet" type="text/css" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 
<script type="text/javascript"> 
    function OpenDatePicker() { 
     $("#<%=datepicker.ClientID %>").datepicker({ changeMonth: true, 
      changeYear: true, 
      duration: "slow", 
      dateFormat: "dd-mm-yy", 
      closeText: "X", 
      showButtonPanel: true, 
      onSelect: function (dateText, inst) { $("#<%=tbFromDate.ClientID %>").val(dateText); $(this).datepicker("hide"); }, 
      onClose: function (dateText, inst) { 
       $("#<%=datepicker.ClientID %>").blur(); 
      } 
     }); 

    }  

</script> 

.aspx的代碼:

<div id="datepicker" runat="server"> 
    <asp:TextBox runat="server" ID="tbFromDate"></asp:TextBox><asp:ImageButton runat="server" ID="ibtnDateFrom" ImageUrl="~/Images/date.gif" OnClientClick="javascript:OpenDatePicker();" /></div> 

當我運行的代碼,然後點擊按鈕,打開日期選擇器爲小於第二或東西,關閉並刷新頁面。

我的代碼有什麼問題?

回答

2

這是由於ImageButton導致Postback。您可以使用圖像,並在其上應用CSS樣式以在懸停上顯示手形光標。

+0

我現在使用圖像...但它再次適用於第一次......沒有任何反應第二次點擊。我不會返回假。 – user1181942 2012-07-17 09:16:09

0

放置語句返回false;在你的OpenDatePicker()函數中

function OpenDatePicker() { 
    $("#<%=datepicker.ClientID %>").datepicker({ changeMonth: true, 
     changeYear: true, 
     duration: "slow", 
     dateFormat: "dd-mm-yy", 
     closeText: "X", 
     showButtonPanel: true, 
     onSelect: function (dateText, inst) { $("#<%=tbFromDate.ClientID %>").val(dateText); $(this).datepicker("hide"); }, 
     onClose: function (dateText, inst) { 
      $("#<%=datepicker.ClientID %>").blur(); 
     } 
    }); 
return false; 
}  
+0

我試了一下..它工作正常的第一次......如果我選擇日期和移除焦點壓光皮(這是正確),但如果我想改變選定的日期,我必須再次點擊日曆按鈕,但即使點擊它後,什麼也沒有發生.. – user1181942 2012-07-17 07:22:56

0

顯示你的日曆按鈕code..is輸入type = submit?點擊日曆按鈕,你必須調用一個方法..可以OpenDatePicker()函數..add返回false或event.preventDefault()禁止默認表單提交。

1

當您單擊ImageButton時,頁面執行回發。

1-您可以使用Image而不是ImageButton。
2-您可以在OpenDatePicker函數中返回false以預先回發。
3-您可以使用datepicker的內置Image支持。

function OpenDatePicker() { 
         $("#<%=datepicker.ClientID %>").datepicker({ 
          buttonImage: "../Images/date.gif", 
          changeMonth: true, 
          changeYear: true, 
          duration: "slow", 
          dateFormat: "dd-mm-yy", 
          closeText: "X", 
          showButtonPanel: true, 
          onSelect: function (dateText, inst) { $("#<%=tbFromDate.ClientID %>").val(dateText); $(this).datepicker("hide"); }, 
          onClose: function (dateText, inst) { 
           $("#<%=datepicker.ClientID %>").blur(); 
          } 
         }); 
        }  
0

試試下面的代碼:

<script type="text/javascript"> 
    $(function() { 
      $("#<%= tbFromDate.ClientID %>").datepicker({ 
      changeMonth: true, 
      changeYear: true, 
      duration: "slow", 
      dateFormat: "dd-mm-yy", 
      closeText: "X", 
      showButtonPanel: true 
      }); 

      $("#<%= ImageButton1.ClientID %>").click(function() { 
       $("#<%= tbFromDate.ClientID %>").datepicker('show'); 
      }); 
     }); 
    </script> 


    <asp:TextBox runat="server" ID="tbFromDate"></asp:TextBox> 
    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/date.gif"/> 

希望這有助於