首頁 > web前端 > js教程 > jquery UI Datepicker時間控制的使用及問題解決

jquery UI Datepicker時間控制的使用及問題解決

PHPz
發布: 2021-05-28 16:03:14
轉載
2496 人瀏覽過

jquery UI Datepicker時間控制的使用及問題解決

本文實例為大家分享了jqueryUI中datepicker的使用,解決與asp.net中的UpdatePanel合併使用時的失效問題。

1.jqueryUI的datepicker的使用

-->先在jqueryUI官上根據你的需求下載。適合你係統主題的樣式,jqueryUI主題:下載地址(http://jqueryui.com/themeroller/#themeGallery)

jquery UI Datepicker時間控制的使用及問題解決



-->下載後的檔案jquery UI Datepicker時間控制的使用及問題解決

jquery-ui-1.10.3.custom資料夾;不同的主題的區別在於它們引用的css不同

預設下載的樣式如下:

jquery UI Datepicker時間控制的使用及問題解決 

其它樣式例如我下載的樣式:


下載的jqueryUI中除了css檔案皆相同

-->頁中的使用datePicker的步驟

(1)引進jquery-ui-1.10.3.custom.min. css樣式檔
<script type="text/javascript">
    $(function () {
      $("#txtStartDate").datepicker({
        dateFormat: "yy-mm-dd",
        changeMonth: true,
        onClose: function (selectedDate) {
          $("#txtEndDate").datepicker("option", "minDate", selectedDate);
        }
      });
      $("#txtEndDate").datepicker({
        dateFormat: "yy-mm-dd",
        changeMonth: true,
        onClose: function (selectedDate) {
          $("#txtStartDate").datepicker("option", "maxDate", selectedDate);
        }
      });
      $("#ui-datepicker-p").css("font-size", "12px"); //改变大小
    });
  </script>
</head>
<body>
  <label for="from">开始时间:</label>
  <input type="text" id="txtStartDate" name="from"/>
  <label for="to">结束时间:</label>
  <input type="text" id="txtEndDate" name="to"/>
</body>
登入後複製
(2)引進jquery-1.9.1.js與jquery-ui-1.10.3.custom.min.js腳本檔;註:先引進jquery檔

(3)我的需求是製作一個起始時間和一個終止時間的選擇。


程式碼如下:

 註:
/* Chinese initialisation for the jQuery UI date picker plugin. */
/* Written by Cloudream (cloudream@gmail.com). */
jQuery(function ($) {
  $.datepicker.regional[&#39;zh-CN&#39;] = {
    closeText: &#39;关闭&#39;,
    prevText: &#39;<上月&#39;,
    nextText: &#39;下月>&#39;,
    currentText: &#39;今天&#39;,
    monthNames: [&#39;一月&#39;, &#39;二月&#39;, &#39;三月&#39;, &#39;四月&#39;, &#39;五月&#39;, &#39;六月&#39;,
        &#39;七月&#39;, &#39;八月&#39;, &#39;九月&#39;, &#39;十月&#39;, &#39;十一月&#39;, &#39;十二月&#39;],
    monthNamesShort: [&#39;一&#39;, &#39;二&#39;, &#39;三&#39;, &#39;四&#39;, &#39;五&#39;, &#39;六&#39;,
        &#39;七&#39;, &#39;八&#39;, &#39;九&#39;, &#39;十&#39;, &#39;十一&#39;, &#39;十二&#39;],
    dayNames: [&#39;星期日&#39;, &#39;星期一&#39;, &#39;星期二&#39;, &#39;星期三&#39;, &#39;星期四&#39;, &#39;星期五&#39;, &#39;星期六&#39;],
    dayNamesShort: [&#39;周日&#39;, &#39;周一&#39;, &#39;周二&#39;, &#39;周三&#39;, &#39;周四&#39;, &#39;周五&#39;, &#39;周六&#39;],
    dayNamesMin: [&#39;日&#39;, &#39;一&#39;, &#39;二&#39;, &#39;三&#39;, &#39;四&#39;, &#39;五&#39;, &#39;六&#39;],
    weekHeader: &#39;周&#39;,
    dateFormat: &#39;yy-mm-dd&#39;,
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: true,
    yearSuffix: &#39;年&#39;
  };
  $.datepicker.setDefaults($.datepicker.regional[&#39;zh-CN&#39;]);
});
登入後複製

(1)$("#ui-datepicker-p").css("font-size", " 12px"); 用來改變日期控制項的大小

(2)dateFormat: "yy-mm-dd",改變日期格式

(3)日期控制項為英文版本,加入一段腳本將其漢化(4)對於一些datepicker的屬性和方法的詳細使用,可以參考其API文檔,上面講的很詳細

 

-->再分享一招 

 $("[id$=txtASN]")的使用定義好的asp.net的textbox控制項idtxtASN,但是$ ("#txtASN")卻取得不到textbox的dom元素了,原因查看原始碼後發現是其控制項ID發生了變化,如果控制項放在了panel中或母版中,產生的html控制項input ID就會發生變化,如pnlBaseInfo_txtASN解決方法: $("[id$=txtASN]"),其意義是獲得id以txtASN結尾的dom元素

jquery UI Datepicker時間控制的使用及問題解決

-->完成效果


2.解決與asp.net中的UpdatePanel合併使用時的失效問題


問題:運行之後,點擊"查詢",頁面局部刷新,發現日曆選擇器不出來了
DatePicker在asp.net的UpdatePanel中異步回傳後失效的問題
在頁面第一次載入時可以正常顯示DatePicker控件,但在點擊查詢後,由於非同步回傳,DatePicker就失效了。

-->分析UpdatePanel
UpdatePanel在應用中主要用於局部刷新,避免整個頁面的Postback。 
UpdatePanel實現局部刷新的核心在於MicrosoftAjaxWebForm.js文件,它的局部刷新過程就是將頁面提交到服務端(包 含ViewState),執行服務端程式碼後異步將在UpdatePanel內的HTML進行重新呈現。

$(function () {
  Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (evt, args) {
    $("[id$=txtStartDate]").datepicker({
      dateFormat: "yy-mm-dd",
      changeMonth: true,
      onClose: function (selectedDate) {
        $("[id$=txtEndDate]").datepicker("option", "minDate", selectedDate);
      }
    });
    $("[id$=txtEndDate]").datepicker({
      dateFormat: "yy-mm-dd",
      changeMonth: true,
      onClose: function (selectedDate) {
        $("[id$=txtStartDate]").datepicker("option", "maxDate", selectedDate);
      }
    });
    $("#ui-datepicker-p").css("font-size", "14px"); //改变大小
  });
});
登入後複製
-->分析jQuery

因為在UpdatePanel局部刷新之後,其中的文字方塊元素被重寫,而此時整個DOM樹並沒有重新載入,所以jQuery的ready事件並沒有觸發,所以文字方塊元素就失去了原有的特效。 -->解決方法將初始化DatePicker的程式碼放在Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(evt, args) {});

大家也可以參考以下文章學習:

jquery UI Datepicker時間控制的用法(一)

jquery UI Datepicker時間控制的用法(二)

jquery UI Datepicker時間控制的用法(二)jquery UI Datepicker時間控制的用法(三)以上就是本文的全部內容,希望對大家的學習有所幫助。
相關標籤:
來源:jb51.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板