jquery.slider.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. /**
  2. * jQuery EasyUI 1.3.4
  3. *
  4. * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the GPL or commercial licenses
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. * http://www.gnu.org/licenses/gpl.txt
  9. * http://www.jeasyui.com/license_commercial.php
  10. *
  11. */
  12. (function($){
  13. function _1(_2){
  14. var _3=$("<div class=\"slider\">"+"<div class=\"slider-inner\">"+"<a href=\"javascript:void(0)\" class=\"slider-handle\"></a>"+"<span class=\"slider-tip\"></span>"+"</div>"+"<div class=\"slider-rule\"></div>"+"<div class=\"slider-rulelabel\"></div>"+"<div style=\"clear:both\"></div>"+"<input type=\"hidden\" class=\"slider-value\">"+"</div>").insertAfter(_2);
  15. var _4=$(_2).hide().attr("name");
  16. if(_4){
  17. _3.find("input.slider-value").attr("name",_4);
  18. $(_2).removeAttr("name").attr("sliderName",_4);
  19. }
  20. return _3;
  21. };
  22. function _5(_6,_7){
  23. var _8=$.data(_6,"slider");
  24. var _9=_8.options;
  25. var _a=_8.slider;
  26. if(_7){
  27. if(_7.width){
  28. _9.width=_7.width;
  29. }
  30. if(_7.height){
  31. _9.height=_7.height;
  32. }
  33. }
  34. if(_9.mode=="h"){
  35. _a.css("height","");
  36. _a.children("div").css("height","");
  37. if(!isNaN(_9.width)){
  38. _a.width(_9.width);
  39. }
  40. }else{
  41. _a.css("width","");
  42. _a.children("div").css("width","");
  43. if(!isNaN(_9.height)){
  44. _a.height(_9.height);
  45. _a.find("div.slider-rule").height(_9.height);
  46. _a.find("div.slider-rulelabel").height(_9.height);
  47. _a.find("div.slider-inner")._outerHeight(_9.height);
  48. }
  49. }
  50. _b(_6);
  51. };
  52. function _c(_d){
  53. var _e=$.data(_d,"slider");
  54. var _f=_e.options;
  55. var _10=_e.slider;
  56. var aa=_f.mode=="h"?_f.rule:_f.rule.slice(0).reverse();
  57. if(_f.reversed){
  58. aa=aa.slice(0).reverse();
  59. }
  60. _11(aa);
  61. function _11(aa){
  62. var _12=_10.find("div.slider-rule");
  63. var _13=_10.find("div.slider-rulelabel");
  64. _12.empty();
  65. _13.empty();
  66. for(var i=0;i<aa.length;i++){
  67. var _14=i*100/(aa.length-1)+"%";
  68. var _15=$("<span></span>").appendTo(_12);
  69. _15.css((_f.mode=="h"?"left":"top"),_14);
  70. if(aa[i]!="|"){
  71. _15=$("<span></span>").appendTo(_13);
  72. _15.html(aa[i]);
  73. if(_f.mode=="h"){
  74. _15.css({left:_14,marginLeft:-Math.round(_15.outerWidth()/2)});
  75. }else{
  76. _15.css({top:_14,marginTop:-Math.round(_15.outerHeight()/2)});
  77. }
  78. }
  79. }
  80. };
  81. };
  82. function _16(_17){
  83. var _18=$.data(_17,"slider");
  84. var _19=_18.options;
  85. var _1a=_18.slider;
  86. _1a.removeClass("slider-h slider-v slider-disabled");
  87. _1a.addClass(_19.mode=="h"?"slider-h":"slider-v");
  88. _1a.addClass(_19.disabled?"slider-disabled":"");
  89. _1a.find("a.slider-handle").draggable({axis:_19.mode,cursor:"pointer",disabled:_19.disabled,onDrag:function(e){
  90. var _1b=e.data.left;
  91. var _1c=_1a.width();
  92. if(_19.mode!="h"){
  93. _1b=e.data.top;
  94. _1c=_1a.height();
  95. }
  96. if(_1b<0||_1b>_1c){
  97. return false;
  98. }else{
  99. var _1d=_32(_17,_1b);
  100. _1e(_1d);
  101. return false;
  102. }
  103. },onBeforeDrag:function(){
  104. _18.isDragging=true;
  105. },onStartDrag:function(){
  106. _19.onSlideStart.call(_17,_19.value);
  107. },onStopDrag:function(e){
  108. var _1f=_32(_17,(_19.mode=="h"?e.data.left:e.data.top));
  109. _1e(_1f);
  110. _19.onSlideEnd.call(_17,_19.value);
  111. _19.onComplete.call(_17,_19.value);
  112. _18.isDragging=false;
  113. }});
  114. _1a.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){
  115. if(_18.isDragging){
  116. return;
  117. }
  118. var pos=$(this).offset();
  119. var _20=_32(_17,(_19.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top)));
  120. _1e(_20);
  121. _19.onComplete.call(_17,_19.value);
  122. });
  123. function _1e(_21){
  124. var s=Math.abs(_21%_19.step);
  125. if(s<_19.step/2){
  126. _21-=s;
  127. }else{
  128. _21=_21-s+_19.step;
  129. }
  130. _22(_17,_21);
  131. };
  132. };
  133. function _22(_23,_24){
  134. var _25=$.data(_23,"slider");
  135. var _26=_25.options;
  136. var _27=_25.slider;
  137. var _28=_26.value;
  138. if(_24<_26.min){
  139. _24=_26.min;
  140. }
  141. if(_24>_26.max){
  142. _24=_26.max;
  143. }
  144. _26.value=_24;
  145. $(_23).val(_24);
  146. _27.find("input.slider-value").val(_24);
  147. var pos=_29(_23,_24);
  148. var tip=_27.find(".slider-tip");
  149. if(_26.showTip){
  150. tip.show();
  151. tip.html(_26.tipFormatter.call(_23,_26.value));
  152. }else{
  153. tip.hide();
  154. }
  155. if(_26.mode=="h"){
  156. var _2a="left:"+pos+"px;";
  157. _27.find(".slider-handle").attr("style",_2a);
  158. tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px");
  159. }else{
  160. var _2a="top:"+pos+"px;";
  161. _27.find(".slider-handle").attr("style",_2a);
  162. tip.attr("style",_2a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px");
  163. }
  164. if(_28!=_24){
  165. _26.onChange.call(_23,_24,_28);
  166. }
  167. };
  168. function _b(_2b){
  169. var _2c=$.data(_2b,"slider").options;
  170. var fn=_2c.onChange;
  171. _2c.onChange=function(){
  172. };
  173. _22(_2b,_2c.value);
  174. _2c.onChange=fn;
  175. };
  176. function _29(_2d,_2e){
  177. var _2f=$.data(_2d,"slider");
  178. var _30=_2f.options;
  179. var _31=_2f.slider;
  180. if(_30.mode=="h"){
  181. var pos=(_2e-_30.min)/(_30.max-_30.min)*_31.width();
  182. if(_30.reversed){
  183. pos=_31.width()-pos;
  184. }
  185. }else{
  186. var pos=_31.height()-(_2e-_30.min)/(_30.max-_30.min)*_31.height();
  187. if(_30.reversed){
  188. pos=_31.height()-pos;
  189. }
  190. }
  191. return pos.toFixed(0);
  192. };
  193. function _32(_33,pos){
  194. var _34=$.data(_33,"slider");
  195. var _35=_34.options;
  196. var _36=_34.slider;
  197. if(_35.mode=="h"){
  198. var _37=_35.min+(_35.max-_35.min)*(pos/_36.width());
  199. }else{
  200. var _37=_35.min+(_35.max-_35.min)*((_36.height()-pos)/_36.height());
  201. }
  202. return _35.reversed?_35.max-_37.toFixed(0):_37.toFixed(0);
  203. };
  204. $.fn.slider=function(_38,_39){
  205. if(typeof _38=="string"){
  206. return $.fn.slider.methods[_38](this,_39);
  207. }
  208. _38=_38||{};
  209. return this.each(function(){
  210. var _3a=$.data(this,"slider");
  211. if(_3a){
  212. $.extend(_3a.options,_38);
  213. }else{
  214. _3a=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_38),slider:_1(this)});
  215. $(this).removeAttr("disabled");
  216. }
  217. var _3b=_3a.options;
  218. _3b.min=parseFloat(_3b.min);
  219. _3b.max=parseFloat(_3b.max);
  220. _3b.value=parseFloat(_3b.value);
  221. _3b.step=parseFloat(_3b.step);
  222. _16(this);
  223. _c(this);
  224. _5(this);
  225. });
  226. };
  227. $.fn.slider.methods={options:function(jq){
  228. return $.data(jq[0],"slider").options;
  229. },destroy:function(jq){
  230. return jq.each(function(){
  231. $.data(this,"slider").slider.remove();
  232. $(this).remove();
  233. });
  234. },resize:function(jq,_3c){
  235. return jq.each(function(){
  236. _5(this,_3c);
  237. });
  238. },getValue:function(jq){
  239. return jq.slider("options").value;
  240. },setValue:function(jq,_3d){
  241. return jq.each(function(){
  242. _22(this,_3d);
  243. });
  244. },enable:function(jq){
  245. return jq.each(function(){
  246. $.data(this,"slider").options.disabled=false;
  247. _16(this);
  248. });
  249. },disable:function(jq){
  250. return jq.each(function(){
  251. $.data(this,"slider").options.disabled=true;
  252. _16(this);
  253. });
  254. }};
  255. $.fn.slider.parseOptions=function(_3e){
  256. var t=$(_3e);
  257. return $.extend({},$.parser.parseOptions(_3e,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)});
  258. };
  259. $.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_3f){
  260. return _3f;
  261. },onChange:function(_40,_41){
  262. },onSlideStart:function(_42){
  263. },onSlideEnd:function(_43){
  264. },onComplete:function(_44){
  265. }};
  266. })(jQuery);