jquery.slider.js 8.4 KB

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