jquery.slider.js 6.9 KB

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