jquery.slider.js 8.5 KB

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