jquery.slider.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  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=$("<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. 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=_33(_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=_33(_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=_33(_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. var _32=_30.mode=="h"?_31.width():_31.height();
  181. var pos=_30.converter.toPosition.call(_2d,_2e,_32);
  182. if(_30.mode=="v"){
  183. pos=_31.height()-pos;
  184. }
  185. if(_30.reversed){
  186. pos=_32-pos;
  187. }
  188. return pos.toFixed(0);
  189. };
  190. function _33(_34,pos){
  191. var _35=$.data(_34,"slider");
  192. var _36=_35.options;
  193. var _37=_35.slider;
  194. var _38=_36.mode=="h"?_37.width():_37.height();
  195. var _39=_36.converter.toValue.call(_34,_36.mode=="h"?(_36.reversed?(_38-pos):pos):(_38-pos),_38);
  196. return _39.toFixed(0);
  197. };
  198. $.fn.slider=function(_3a,_3b){
  199. if(typeof _3a=="string"){
  200. return $.fn.slider.methods[_3a](this,_3b);
  201. }
  202. _3a=_3a||{};
  203. return this.each(function(){
  204. var _3c=$.data(this,"slider");
  205. if(_3c){
  206. $.extend(_3c.options,_3a);
  207. }else{
  208. _3c=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_3a),slider:_1(this)});
  209. $(this).removeAttr("disabled");
  210. }
  211. var _3d=_3c.options;
  212. _3d.min=parseFloat(_3d.min);
  213. _3d.max=parseFloat(_3d.max);
  214. _3d.value=parseFloat(_3d.value);
  215. _3d.step=parseFloat(_3d.step);
  216. _3d.originalValue=_3d.value;
  217. _16(this);
  218. _c(this);
  219. _5(this);
  220. });
  221. };
  222. $.fn.slider.methods={options:function(jq){
  223. return $.data(jq[0],"slider").options;
  224. },destroy:function(jq){
  225. return jq.each(function(){
  226. $.data(this,"slider").slider.remove();
  227. $(this).remove();
  228. });
  229. },resize:function(jq,_3e){
  230. return jq.each(function(){
  231. _5(this,_3e);
  232. });
  233. },getValue:function(jq){
  234. return jq.slider("options").value;
  235. },setValue:function(jq,_3f){
  236. return jq.each(function(){
  237. _22(this,_3f);
  238. });
  239. },clear:function(jq){
  240. return jq.each(function(){
  241. var _40=$(this).slider("options");
  242. _22(this,_40.min);
  243. });
  244. },reset:function(jq){
  245. return jq.each(function(){
  246. var _41=$(this).slider("options");
  247. _22(this,_41.originalValue);
  248. });
  249. },enable:function(jq){
  250. return jq.each(function(){
  251. $.data(this,"slider").options.disabled=false;
  252. _16(this);
  253. });
  254. },disable:function(jq){
  255. return jq.each(function(){
  256. $.data(this,"slider").options.disabled=true;
  257. _16(this);
  258. });
  259. }};
  260. $.fn.slider.parseOptions=function(_42){
  261. var t=$(_42);
  262. return $.extend({},$.parser.parseOptions(_42,["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)});
  263. };
  264. $.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(_43){
  265. return _43;
  266. },converter:{toPosition:function(_44,_45){
  267. var _46=$(this).slider("options");
  268. return (_44-_46.min)/(_46.max-_46.min)*_45;
  269. },toValue:function(pos,_47){
  270. var _48=$(this).slider("options");
  271. return _48.min+(_48.max-_48.min)*(pos/_47);
  272. }},onChange:function(_49,_4a){
  273. },onSlideStart:function(_4b){
  274. },onSlideEnd:function(_4c){
  275. },onComplete:function(_4d){
  276. }};
  277. })(jQuery);