jquery.datebox.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. /**
  2. * jQuery EasyUI 1.3.6
  3. *
  4. * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt
  7. * To use it on other terms please contact us at 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();
  16. _10(_2,$(_2).datebox("getText"),true);
  17. _4.onShowPanel.call(_2);
  18. }}));
  19. $(_2).combo("textbox").parent().addClass("datebox");
  20. if(!_3.calendar){
  21. _6();
  22. }
  23. _10(_2,_4.value);
  24. function _6(){
  25. var _7=$(_2).combo("panel").css("overflow","hidden");
  26. _7.panel("options").onBeforeDestroy=function(){
  27. var sc=$(this).find(".calendar-shared");
  28. if(sc.length){
  29. sc.insertBefore(sc[0].pholder);
  30. }
  31. };
  32. var cc=$("<div class=\"datebox-calendar-inner\"></div>").appendTo(_7);
  33. if(_4.sharedCalendar){
  34. var sc=$(_4.sharedCalendar);
  35. if(!sc[0].pholder){
  36. sc[0].pholder=$("<div class=\"calendar-pholder\" style=\"display:none\"></div>").insertAfter(sc);
  37. }
  38. sc.addClass("calendar-shared").appendTo(cc);
  39. if(!sc.hasClass("calendar")){
  40. sc.calendar();
  41. }
  42. _3.calendar=sc;
  43. }else{
  44. _3.calendar=$("<div></div>").appendTo(cc).calendar();
  45. }
  46. $.extend(_3.calendar.calendar("options"),{fit:true,border:false,onSelect:function(_8){
  47. var _9=$(this.target).datebox("options");
  48. _10(this.target,_9.formatter.call(this.target,_8));
  49. $(this.target).combo("hidePanel");
  50. _9.onSelect.call(_2,_8);
  51. }});
  52. var _a=$("<div class=\"datebox-button\"><table cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%\"><tr></tr></table></div>").appendTo(_7);
  53. var tr=_a.find("tr");
  54. for(var i=0;i<_4.buttons.length;i++){
  55. var td=$("<td></td>").appendTo(tr);
  56. var _b=_4.buttons[i];
  57. var t=$("<a href=\"javascript:void(0)\"></a>").html($.isFunction(_b.text)?_b.text(_2):_b.text).appendTo(td);
  58. t.bind("click",{target:_2,handler:_b.handler},function(e){
  59. e.data.handler.call(this,e.data.target);
  60. });
  61. }
  62. tr.find("td").css("width",(100/_4.buttons.length)+"%");
  63. };
  64. function _5(){
  65. var _c=$(_2).combo("panel");
  66. var cc=_c.children("div.datebox-calendar-inner");
  67. _c.children()._outerWidth(_c.width());
  68. _3.calendar.appendTo(cc);
  69. _3.calendar[0].target=_2;
  70. if(_4.panelHeight!="auto"){
  71. var _d=_c.height();
  72. _c.children().not(cc).each(function(){
  73. _d-=$(this).outerHeight();
  74. });
  75. cc._outerHeight(_d);
  76. }
  77. _3.calendar.calendar("resize");
  78. };
  79. };
  80. function _e(_f,q){
  81. _10(_f,q,true);
  82. };
  83. function _11(_12){
  84. var _13=$.data(_12,"datebox");
  85. var _14=_13.options;
  86. var _15=_13.calendar.calendar("options").current;
  87. if(_15){
  88. _10(_12,_14.formatter.call(_12,_15));
  89. $(_12).combo("hidePanel");
  90. }
  91. };
  92. function _10(_16,_17,_18){
  93. var _19=$.data(_16,"datebox");
  94. var _1a=_19.options;
  95. var _1b=_19.calendar;
  96. $(_16).combo("setValue",_17);
  97. _1b.calendar("moveTo",_1a.parser.call(_16,_17));
  98. if(!_18){
  99. if(_17){
  100. _17=_1a.formatter.call(_16,_1b.calendar("options").current);
  101. $(_16).combo("setValue",_17).combo("setText",_17);
  102. }else{
  103. $(_16).combo("setText",_17);
  104. }
  105. }
  106. };
  107. $.fn.datebox=function(_1c,_1d){
  108. if(typeof _1c=="string"){
  109. var _1e=$.fn.datebox.methods[_1c];
  110. if(_1e){
  111. return _1e(this,_1d);
  112. }else{
  113. return this.combo(_1c,_1d);
  114. }
  115. }
  116. _1c=_1c||{};
  117. return this.each(function(){
  118. var _1f=$.data(this,"datebox");
  119. if(_1f){
  120. $.extend(_1f.options,_1c);
  121. }else{
  122. $.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_1c)});
  123. }
  124. _1(this);
  125. });
  126. };
  127. $.fn.datebox.methods={options:function(jq){
  128. var _20=jq.combo("options");
  129. return $.extend($.data(jq[0],"datebox").options,{originalValue:_20.originalValue,disabled:_20.disabled,readonly:_20.readonly});
  130. },calendar:function(jq){
  131. return $.data(jq[0],"datebox").calendar;
  132. },setValue:function(jq,_21){
  133. return jq.each(function(){
  134. _10(this,_21);
  135. });
  136. },reset:function(jq){
  137. return jq.each(function(){
  138. var _22=$(this).datebox("options");
  139. $(this).datebox("setValue",_22.originalValue);
  140. });
  141. }};
  142. $.fn.datebox.parseOptions=function(_23){
  143. return $.extend({},$.fn.combo.parseOptions(_23),$.parser.parseOptions(_23,["sharedCalendar"]));
  144. };
  145. $.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){
  146. },down:function(e){
  147. },left:function(e){
  148. },right:function(e){
  149. },enter:function(e){
  150. _11(this);
  151. },query:function(q,e){
  152. _e(this,q);
  153. }},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_24){
  154. return $(_24).datebox("options").currentText;
  155. },handler:function(_25){
  156. $(_25).datebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()});
  157. _11(_25);
  158. }},{text:function(_26){
  159. return $(_26).datebox("options").closeText;
  160. },handler:function(_27){
  161. $(this).closest("div.combo-panel").panel("close");
  162. }}],formatter:function(_28){
  163. var y=_28.getFullYear();
  164. var m=_28.getMonth()+1;
  165. var d=_28.getDate();
  166. return m+"/"+d+"/"+y;
  167. },parser:function(s){
  168. var t=Date.parse(s);
  169. if(!isNaN(t)){
  170. return new Date(t);
  171. }else{
  172. return new Date();
  173. }
  174. },onSelect:function(_29){
  175. }});
  176. })(jQuery);