jquery.datebox.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /**
  2. * EasyUI for jQuery 1.6.10
  3. *
  4. * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. var _3=$.data(_2,"datebox");
  13. var _4=_3.options;
  14. $(_2).addClass("datebox-f").combo($.extend({},_4,{onShowPanel:function(){
  15. _5(this);
  16. _6(this);
  17. _7(this);
  18. _18(this,$(this).datebox("getText"),true);
  19. _4.onShowPanel.call(this);
  20. }}));
  21. if(!_3.calendar){
  22. var _8=$(_2).combo("panel").css("overflow","hidden");
  23. _8.panel("options").onBeforeDestroy=function(){
  24. var c=$(this).find(".calendar-shared");
  25. if(c.length){
  26. c.insertBefore(c[0].pholder);
  27. }
  28. };
  29. var cc=$("<div class=\"datebox-calendar-inner\"></div>").prependTo(_8);
  30. if(_4.sharedCalendar){
  31. var c=$(_4.sharedCalendar);
  32. if(!c[0].pholder){
  33. c[0].pholder=$("<div class=\"calendar-pholder\" style=\"display:none\"></div>").insertAfter(c);
  34. }
  35. c.addClass("calendar-shared").appendTo(cc);
  36. if(!c.hasClass("calendar")){
  37. c.calendar();
  38. }
  39. _3.calendar=c;
  40. }else{
  41. _3.calendar=$("<div></div>").appendTo(cc).calendar();
  42. }
  43. $.extend(_3.calendar.calendar("options"),{fit:true,border:false,onSelect:function(_9){
  44. var _a=this.target;
  45. var _b=$(_a).datebox("options");
  46. _b.onSelect.call(_a,_9);
  47. _18(_a,_b.formatter.call(_a,_9));
  48. $(_a).combo("hidePanel");
  49. }});
  50. }
  51. $(_2).combo("textbox").parent().addClass("datebox");
  52. $(_2).datebox("initValue",_4.value);
  53. function _5(_c){
  54. var _d=$(_c).datebox("options");
  55. var _e=$(_c).combo("panel");
  56. _e.unbind(".datebox").bind("click.datebox",function(e){
  57. if($(e.target).hasClass("datebox-button-a")){
  58. var _f=parseInt($(e.target).attr("datebox-button-index"));
  59. _d.buttons[_f].handler.call(e.target,_c);
  60. }
  61. });
  62. };
  63. function _6(_10){
  64. var _11=$(_10).combo("panel");
  65. if(_11.children("div.datebox-button").length){
  66. return;
  67. }
  68. var _12=$("<div class=\"datebox-button\"><table cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%\"><tr></tr></table></div>").appendTo(_11);
  69. var tr=_12.find("tr");
  70. for(var i=0;i<_4.buttons.length;i++){
  71. var td=$("<td></td>").appendTo(tr);
  72. var btn=_4.buttons[i];
  73. var t=$("<a class=\"datebox-button-a\" href=\"javascript:;\"></a>").html($.isFunction(btn.text)?btn.text(_10):btn.text).appendTo(td);
  74. t.attr("datebox-button-index",i);
  75. }
  76. tr.find("td").css("width",(100/_4.buttons.length)+"%");
  77. };
  78. function _7(_13){
  79. var _14=$(_13).combo("panel");
  80. var cc=_14.children("div.datebox-calendar-inner");
  81. _14.children()._outerWidth(_14.width());
  82. _3.calendar.appendTo(cc);
  83. _3.calendar[0].target=_13;
  84. if(_4.panelHeight!="auto"){
  85. var _15=_14.height();
  86. _14.children().not(cc).each(function(){
  87. _15-=$(this).outerHeight();
  88. });
  89. cc._outerHeight(_15);
  90. }
  91. _3.calendar.calendar("resize");
  92. };
  93. };
  94. function _16(_17,q){
  95. _18(_17,q,true);
  96. };
  97. function _19(_1a){
  98. var _1b=$.data(_1a,"datebox");
  99. var _1c=_1b.options;
  100. var _1d=_1b.calendar.calendar("options").current;
  101. if(_1d){
  102. _18(_1a,_1c.formatter.call(_1a,_1d));
  103. $(_1a).combo("hidePanel");
  104. }
  105. };
  106. function _18(_1e,_1f,_20){
  107. var _21=$.data(_1e,"datebox");
  108. var _22=_21.options;
  109. var _23=_21.calendar;
  110. _23.calendar("moveTo",_22.parser.call(_1e,_1f));
  111. if(_20){
  112. $(_1e).combo("setValue",_1f);
  113. }else{
  114. if(_1f){
  115. _1f=_22.formatter.call(_1e,_23.calendar("options").current);
  116. }
  117. $(_1e).combo("setText",_1f).combo("setValue",_1f);
  118. }
  119. };
  120. $.fn.datebox=function(_24,_25){
  121. if(typeof _24=="string"){
  122. var _26=$.fn.datebox.methods[_24];
  123. if(_26){
  124. return _26(this,_25);
  125. }else{
  126. return this.combo(_24,_25);
  127. }
  128. }
  129. _24=_24||{};
  130. return this.each(function(){
  131. var _27=$.data(this,"datebox");
  132. if(_27){
  133. $.extend(_27.options,_24);
  134. }else{
  135. $.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_24)});
  136. }
  137. _1(this);
  138. });
  139. };
  140. $.fn.datebox.methods={options:function(jq){
  141. var _28=jq.combo("options");
  142. return $.extend($.data(jq[0],"datebox").options,{width:_28.width,height:_28.height,originalValue:_28.originalValue,disabled:_28.disabled,readonly:_28.readonly});
  143. },cloneFrom:function(jq,_29){
  144. return jq.each(function(){
  145. $(this).combo("cloneFrom",_29);
  146. $.data(this,"datebox",{options:$.extend(true,{},$(_29).datebox("options")),calendar:$(_29).datebox("calendar")});
  147. $(this).addClass("datebox-f");
  148. });
  149. },calendar:function(jq){
  150. return $.data(jq[0],"datebox").calendar;
  151. },initValue:function(jq,_2a){
  152. return jq.each(function(){
  153. var _2b=$(this).datebox("options");
  154. var _2c=_2b.value;
  155. if(_2c){
  156. _2c=_2b.formatter.call(this,_2b.parser.call(this,_2c));
  157. }
  158. $(this).combo("initValue",_2c).combo("setText",_2c);
  159. });
  160. },setValue:function(jq,_2d){
  161. return jq.each(function(){
  162. _18(this,_2d);
  163. });
  164. },reset:function(jq){
  165. return jq.each(function(){
  166. var _2e=$(this).datebox("options");
  167. $(this).datebox("setValue",_2e.originalValue);
  168. });
  169. }};
  170. $.fn.datebox.parseOptions=function(_2f){
  171. return $.extend({},$.fn.combo.parseOptions(_2f),$.parser.parseOptions(_2f,["sharedCalendar"]));
  172. };
  173. $.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:250,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){
  174. },down:function(e){
  175. },left:function(e){
  176. },right:function(e){
  177. },enter:function(e){
  178. _19(this);
  179. },query:function(q,e){
  180. _16(this,q);
  181. }},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_30){
  182. return $(_30).datebox("options").currentText;
  183. },handler:function(_31){
  184. var _32=$(_31).datebox("options");
  185. var now=new Date();
  186. var _33=new Date(now.getFullYear(),now.getMonth(),now.getDate());
  187. $(_31).datebox("calendar").calendar({year:_33.getFullYear(),month:_33.getMonth()+1,current:_33});
  188. _32.onSelect.call(_31,_33);
  189. _19(_31);
  190. }},{text:function(_34){
  191. return $(_34).datebox("options").closeText;
  192. },handler:function(_35){
  193. $(this).closest("div.combo-panel").panel("close");
  194. }}],formatter:function(_36){
  195. var y=_36.getFullYear();
  196. var m=_36.getMonth()+1;
  197. var d=_36.getDate();
  198. return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y;
  199. },parser:function(s){
  200. if(!s){
  201. return new Date();
  202. }
  203. var ss=s.split("/");
  204. var m=parseInt(ss[0],10);
  205. var d=parseInt(ss[1],10);
  206. var y=parseInt(ss[2],10);
  207. if(!isNaN(y)&&!isNaN(m)&&!isNaN(d)){
  208. return new Date(y,m-1,d);
  209. }else{
  210. return new Date();
  211. }
  212. },onSelect:function(_37){
  213. }});
  214. })(jQuery);