jQuery外掛程式datepicker 日期連續選取

來源:互聯網
上載者:User

jQuery外掛程式datepicker 日期連續選取

 先上效果:

代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>日期選擇</title>

<link rel="stylesheet" href="reset-jquery-ui.min.css" />

<script type="text/javascript" src="jquery-1.8.3.min.js"></script>

<script type="text/javascript" src="jquery-ui.js"></script>

<script type="text/javascript">

//日期選擇

$.datepicker.regional['zh-CN'] = {

clearText: '清除',

clearStatus: '清除已選日期',

closeText: '關閉',

closeStatus: '不改變當前選擇',

prevText: '<上月',

prevStatus: '顯示上月',

prevBigText: '<<',

prevBigStatus: '顯示上一年',

nextText: '下月>',

nextStatus: '顯示下月',

nextBigText: '>>',

nextBigStatus: '顯示下一年',

currentText: '今天',

currentStatus: '顯示本月',

monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],

monthNamesShort: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],

monthStatus: '選擇月份',

yearStatus: '選擇年份',

weekHeader: '周',

weekStatus: '年內周次',

dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],

dayNamesShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],

dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'],

dayStatus: '設定 DD 為一周起始',

dateStatus: '選擇 m月 d日, DD',

dateFormat: 'yy-mm-dd',

firstDay: 1,

initStatus: '請選擇日期',

isRTL: false

};

$.datepicker.setDefaults($.datepicker.regional['zh-CN']);

 

var a = 0;

var tmpdate = "";

 

/**

* 執行個體化日期控制項,並綁定回呼函數,傳入相應參數

* tagId 日期控制項執行個體化的標籤id

* ajaxMethod 回呼函數

* ajaxMethod 函數需要用到的額外參數

**/

function datePickerById(tagId){

$(tagId).datepicker( {

isDataChecked:true,

autoClose:true,

showOtherMonths: true,

changeYear: true,

//showStatus: true,

//showOn: "both",

numberOfMonths:2,//顯示幾個月

showMonthAfterYear:true,

onSelect: function(dateText,inst) {//選擇日期後執行的操作

a++;

inst.autoClose = true;

if(a==1){

inst.settings.isDataChecked = false;

tmpdate = dateText;

}

if(a==2){

a=0;

inst.settings.isDataChecked = false;

inst.autoClose = false;

var date1 = new Date(tmpdate).getTime();

var date2 = new Date(dateText).getTime();

 

var arg = {time_s:date1,time_e:date2}; //ajax函數要用到的時間參數

 

if(date1<date2){

$(tagId).val(tmpdate.replace(/-/ig,"-")+"至"+dateText.replace(/-/ig,"-"));

}else if(date1 == date2){

a = 1;

inst.settings.isDataChecked = false;

inst.autoClose = true;

}else{

$(tagId).val(dateText.replace(/-/ig,"-")+"至"+tmpdate.replace(/-/ig,"-"));

}

}

 

}

});

}

</script>

</head>

<body>

時間選擇:<input id="div1" style="height:30px;width:190px;"/>

<script type="text/javascript">

datePickerById('#div1');

</script>

</body>

</html>

基於jquery UI 1.11.4修改如下(在源碼裡面修改):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

/* Hide the date picker from view.

* @param input element - the input field attached to the date picker

*/

_hideDatepicker: function(input) {

var showAnim, duration, postProcess, onClose,

inst = this._curInst;

 

if (!inst || (input && inst !== $.data(input, "datepicker"))) {

return;

}

/**

* 2015.6.11 修改

* author:link

* 增加inst.autoClose控制日曆面板

*/

// -----------------------------------------------------------------------------------------

if (this._datepickerShowing||!inst.autoClose) { showAnim = this._get(inst, "showAnim"); duration = this._get(inst, "duration"); postProcess = function() { $.datepicker._tidyDialog(inst); }; // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed if(inst.autoClose===true){ // 這裡不隱藏 }else{ if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); } else { inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); } }

// -----------------------------------------------------------------------------------------

if (!showAnim) { postProcess(); } this._datepickerShowing = false; onClose = this._get(inst, "onClose"); if (onClose) { onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); } this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); if ($.blockUI) { $.unblockUI(); $("body").append(this.dpDiv); } } this._inDialog = false; } },

 

以上所述就是本文的全部內容了,希望大家能夠喜歡。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.