jquery.slider.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. /**
  2. * jQuery EasyUI 1.4.2
  3. *
  4. * Copyright (c) 2009-2015 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. var _1c=_1b.find(".slider-inner");
  89. _1c.html("<a href=\"javascript:void(0)\" class=\"slider-handle\"></a>"+"<span class=\"slider-tip\"></span>");
  90. if(_1a.range){
  91. _1c.append("<a href=\"javascript:void(0)\" class=\"slider-handle\"></a>"+"<span class=\"slider-tip\"></span>");
  92. }
  93. _1b.find("a.slider-handle").draggable({axis:_1a.mode,cursor:"pointer",disabled:_1a.disabled,onDrag:function(e){
  94. var _1d=e.data.left;
  95. var _1e=_1b.width();
  96. if(_1a.mode!="h"){
  97. _1d=e.data.top;
  98. _1e=_1b.height();
  99. }
  100. if(_1d<0||_1d>_1e){
  101. return false;
  102. }else{
  103. _1f(_1d);
  104. return false;
  105. }
  106. },onBeforeDrag:function(){
  107. _19.isDragging=true;
  108. },onStartDrag:function(){
  109. _1a.onSlideStart.call(_18,_1a.value);
  110. },onStopDrag:function(e){
  111. _1f(_1a.mode=="h"?e.data.left:e.data.top);
  112. _1a.onSlideEnd.call(_18,_1a.value);
  113. _1a.onComplete.call(_18,_1a.value);
  114. _19.isDragging=false;
  115. }});
  116. _1b.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){
  117. if(_19.isDragging||_1a.disabled){
  118. return;
  119. }
  120. var pos=$(this).offset();
  121. _1f(_1a.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top));
  122. _1a.onComplete.call(_18,_1a.value);
  123. });
  124. function _1f(pos){
  125. var _20=_21(_18,pos);
  126. var s=Math.abs(_20%_1a.step);
  127. if(s<_1a.step/2){
  128. _20-=s;
  129. }else{
  130. _20=_20-s+_1a.step;
  131. }
  132. if(_1a.range){
  133. var v1=_1a.value[0];
  134. var v2=_1a.value[1];
  135. var m=parseFloat((v1+v2)/2);
  136. if(_20<v1){
  137. v1=_20;
  138. }else{
  139. if(_20>v2){
  140. v2=_20;
  141. }else{
  142. _20<m?v1=_20:v2=_20;
  143. }
  144. }
  145. $(_18).slider("setValues",[v1,v2]);
  146. }else{
  147. $(_18).slider("setValue",_20);
  148. }
  149. };
  150. };
  151. function _22(_23,_24){
  152. var _25=$.data(_23,"slider");
  153. var _26=_25.options;
  154. var _27=_25.slider;
  155. var _28=$.isArray(_26.value)?_26.value:[_26.value];
  156. var _29=[];
  157. if(!$.isArray(_24)){
  158. _24=$.map(String(_24).split(_26.separator),function(v){
  159. return parseFloat(v);
  160. });
  161. }
  162. _27.find(".slider-value").remove();
  163. var _2a=$(_23).attr("sliderName")||"";
  164. for(var i=0;i<_24.length;i++){
  165. var _2b=_24[i];
  166. if(_2b<_26.min){
  167. _2b=_26.min;
  168. }
  169. if(_2b>_26.max){
  170. _2b=_26.max;
  171. }
  172. var _2c=$("<input type=\"hidden\" class=\"slider-value\">").appendTo(_27);
  173. _2c.attr("name",_2a);
  174. _2c.val(_2b);
  175. _29.push(_2b);
  176. var _2d=_27.find(".slider-handle:eq("+i+")");
  177. var tip=_2d.next();
  178. var pos=_2e(_23,_2b);
  179. if(_26.showTip){
  180. tip.show();
  181. tip.html(_26.tipFormatter.call(_23,_2b));
  182. }else{
  183. tip.hide();
  184. }
  185. if(_26.mode=="h"){
  186. var _2f="left:"+pos+"px;";
  187. _2d.attr("style",_2f);
  188. tip.attr("style",_2f+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px");
  189. }else{
  190. var _2f="top:"+pos+"px;";
  191. _2d.attr("style",_2f);
  192. tip.attr("style",_2f+"margin-left:"+(-Math.round(tip.outerWidth()))+"px");
  193. }
  194. }
  195. _26.value=_26.range?_29:_29[0];
  196. $(_23).val(_26.range?_29.join(_26.separator):_29[0]);
  197. if(_28.join(",")!=_29.join(",")){
  198. _26.onChange.call(_23,_26.value,(_26.range?_28:_28[0]));
  199. }
  200. };
  201. function _c(_30){
  202. var _31=$.data(_30,"slider").options;
  203. var fn=_31.onChange;
  204. _31.onChange=function(){
  205. };
  206. _22(_30,_31.value);
  207. _31.onChange=fn;
  208. };
  209. function _2e(_32,_33){
  210. var _34=$.data(_32,"slider");
  211. var _35=_34.options;
  212. var _36=_34.slider;
  213. var _37=_35.mode=="h"?_36.width():_36.height();
  214. var pos=_35.converter.toPosition.call(_32,_33,_37);
  215. if(_35.mode=="v"){
  216. pos=_36.height()-pos;
  217. }
  218. if(_35.reversed){
  219. pos=_37-pos;
  220. }
  221. return pos.toFixed(0);
  222. };
  223. function _21(_38,pos){
  224. var _39=$.data(_38,"slider");
  225. var _3a=_39.options;
  226. var _3b=_39.slider;
  227. var _3c=_3a.mode=="h"?_3b.width():_3b.height();
  228. var _3d=_3a.converter.toValue.call(_38,_3a.mode=="h"?(_3a.reversed?(_3c-pos):pos):(_3c-pos),_3c);
  229. return _3d.toFixed(0);
  230. };
  231. $.fn.slider=function(_3e,_3f){
  232. if(typeof _3e=="string"){
  233. return $.fn.slider.methods[_3e](this,_3f);
  234. }
  235. _3e=_3e||{};
  236. return this.each(function(){
  237. var _40=$.data(this,"slider");
  238. if(_40){
  239. $.extend(_40.options,_3e);
  240. }else{
  241. _40=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_3e),slider:_1(this)});
  242. $(this).removeAttr("disabled");
  243. }
  244. var _41=_40.options;
  245. _41.min=parseFloat(_41.min);
  246. _41.max=parseFloat(_41.max);
  247. if(_41.range){
  248. if(!$.isArray(_41.value)){
  249. _41.value=$.map(String(_41.value).split(_41.separator),function(v){
  250. return parseFloat(v);
  251. });
  252. }
  253. if(_41.value.length<2){
  254. _41.value.push(_41.max);
  255. }
  256. }else{
  257. _41.value=parseFloat(_41.value);
  258. }
  259. _41.step=parseFloat(_41.step);
  260. _41.originalValue=_41.value;
  261. _17(this);
  262. _d(this);
  263. _6(this);
  264. });
  265. };
  266. $.fn.slider.methods={options:function(jq){
  267. return $.data(jq[0],"slider").options;
  268. },destroy:function(jq){
  269. return jq.each(function(){
  270. $.data(this,"slider").slider.remove();
  271. $(this).remove();
  272. });
  273. },resize:function(jq,_42){
  274. return jq.each(function(){
  275. _6(this,_42);
  276. });
  277. },getValue:function(jq){
  278. return jq.slider("options").value;
  279. },getValues:function(jq){
  280. return jq.slider("options").value;
  281. },setValue:function(jq,_43){
  282. return jq.each(function(){
  283. _22(this,[_43]);
  284. });
  285. },setValues:function(jq,_44){
  286. return jq.each(function(){
  287. _22(this,_44);
  288. });
  289. },clear:function(jq){
  290. return jq.each(function(){
  291. var _45=$(this).slider("options");
  292. _22(this,_45.range?[_45.min,_45.max]:[_45.min]);
  293. });
  294. },reset:function(jq){
  295. return jq.each(function(){
  296. var _46=$(this).slider("options");
  297. $(this).slider(_46.range?"setValues":"setValue",_46.originalValue);
  298. });
  299. },enable:function(jq){
  300. return jq.each(function(){
  301. $.data(this,"slider").options.disabled=false;
  302. _17(this);
  303. });
  304. },disable:function(jq){
  305. return jq.each(function(){
  306. $.data(this,"slider").options.disabled=true;
  307. _17(this);
  308. });
  309. }};
  310. $.fn.slider.parseOptions=function(_47){
  311. var t=$(_47);
  312. return $.extend({},$.parser.parseOptions(_47,["width","height","mode",{reversed:"boolean",showTip:"boolean",range:"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)});
  313. };
  314. $.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,range:false,value:0,separator:",",min:0,max:100,step:1,rule:[],tipFormatter:function(_48){
  315. return _48;
  316. },converter:{toPosition:function(_49,_4a){
  317. var _4b=$(this).slider("options");
  318. return (_49-_4b.min)/(_4b.max-_4b.min)*_4a;
  319. },toValue:function(pos,_4c){
  320. var _4d=$(this).slider("options");
  321. return _4d.min+(_4d.max-_4d.min)*(pos/_4c);
  322. }},onChange:function(_4e,_4f){
  323. },onSlideStart:function(_50){
  324. },onSlideEnd:function(_51){
  325. },onComplete:function(_52){
  326. }};
  327. })(jQuery);