pintuer.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. $(function(){
  2. window.webPath = "http:/127.0.0.1:11085/";
  3. // console.log(window.webPath)
  4. $(".win-homepage").click(function(){
  5. if(document.all){
  6. document.body.style.behavior = 'url(#default#homepage)';
  7. document.body.setHomePage(document.URL);
  8. }else{alert("设置首页失败,请手动设置!");}
  9. });
  10. $(".win-favorite").click(function(){
  11. var sURL=document.URL;
  12. var sTitle=document.title;
  13. try {window.external.addFavorite(sURL, sTitle);}
  14. catch(e){
  15. try{window.sidebar.addPanel(sTitle, sURL, "");}
  16. catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");}
  17. }
  18. });
  19. $(".win-forward").click(function(){
  20. window.history.forward(1);
  21. });
  22. $(".win-back").click(function(){
  23. window.history.back(-1);
  24. });
  25. $(".win-backtop").click(function(){$('body,html').animate({scrollTop:0},1000);return false;});
  26. $(".win-refresh").click(function(){
  27. window.location.reload();
  28. });
  29. $(".win-print").click(function(){
  30. window.print();
  31. });
  32. $(".win-close").click(function(){
  33. window.close();
  34. });
  35. $('.checkall').click(function(){
  36. var e=$(this);
  37. var name=e.attr("name");
  38. var checkfor=e.attr("checkfor");
  39. var type;
  40. if (checkfor!='' && checkfor!=null && checkfor!=undefined){
  41. type=e.closest('form').find("input[name='"+checkfor+"']");
  42. }else{
  43. type=e.closest('form').find("input[type='checkbox']");
  44. };
  45. if (name=="checkall"){
  46. $(type).each(function(index, element){
  47. element.checked=true;
  48. });
  49. e.attr("name","ok");
  50. }else{
  51. $(type).each(function(index, element){
  52. element.checked=false;
  53. });
  54. e.attr("name","checkall");
  55. }
  56. });
  57. $('.dropdown-toggle').click(function(){
  58. $(this).closest('.button-group, .drop').addClass("open");
  59. });
  60. $(document).bind("click",function(e){
  61. if($(e.target).closest(".button-group.open, .drop.open").length == 0){
  62. $(".button-group, .drop").removeClass("open");
  63. }
  64. });
  65. $checkplaceholder=function(){
  66. var input = document.createElement('input');
  67. return 'placeholder' in input;
  68. };
  69. if(!$checkplaceholder()){
  70. $("textarea[placeholder], input[placeholder]").each(function(index, element){
  71. var content=false;
  72. if($(this).val().length ===0 || $(this).val()==$(this).attr("placeholder")){content=true};
  73. if(content){
  74. $(element).val($(element).attr("placeholder"));
  75. $(element).css("color","rgb(169,169,169)");
  76. $(element).data("pintuerholder",$(element).css("color"));
  77. $(element).focus(function(){$hideplaceholder($(this));});
  78. $(element).blur(function(){$showplaceholder($(this));});
  79. }
  80. })
  81. };
  82. $showplaceholder=function(element){
  83. if( ($(element).val().length ===0 || $(element).val()==$(element).attr("placeholder")) && $(element).attr("type")!="password"){
  84. $(element).val($(element).attr("placeholder"));
  85. $(element).data("pintuerholder",$(element).css("color"));
  86. $(element).css("color","rgb(169,169,169)");
  87. }
  88. };
  89. var $hideplaceholder=function(element){
  90. if($(element).data("pintuerholder")){
  91. $(element).val("");
  92. $(element).css("color", $(element).data("pintuerholder"));
  93. $(element).removeData("pintuerholder");
  94. }
  95. };
  96. $('textarea, input, select').blur(function(){
  97. var e=$(this);
  98. if(e.attr("data-validate")){
  99. e.closest('.field').find(".input-help").remove();
  100. var $checkdata=e.attr("data-validate").split(',');
  101. var $checkvalue=e.val();
  102. var $checkstate=true;
  103. var $checktext="";
  104. if(e.attr("placeholder")==$checkvalue){$checkvalue="";}
  105. if($checkvalue!="" || e.attr("data-validate").indexOf("required")>=0){
  106. for(var i=0;i<$checkdata.length;i++){
  107. var $checktype=$checkdata[i].split(':');
  108. if(! $pintuercheck(e,$checktype[0],$checkvalue)){
  109. $checkstate=false;
  110. $checktext=$checktext+"<li>"+$checktype[1]+"</li>";
  111. }
  112. }
  113. };
  114. if($checkstate){
  115. e.closest('.form-group').removeClass("check-error");
  116. e.parent().find(".input-help").remove();
  117. e.closest('.form-group').addClass("check-success");
  118. }else{
  119. e.closest('.form-group').removeClass("check-success");
  120. e.closest('.form-group').addClass("check-error");
  121. e.closest('.field').append('<div class="input-help"><ul>'+$checktext+'</ul></div>');
  122. }
  123. }
  124. });
  125. $pintuercheck=function(element,type,value){
  126. $pintu=value.replace(/(^\s*)|(\s*$)/g, "");
  127. switch(type){
  128. case "required":return /[^(^\s*)|(\s*$)]/.test($pintu);break;
  129. case "chinese":return /^[\u0391-\uFFE5]+$/.test($pintu);break;
  130. case "number":return /^\d+$/.test($pintu);break;
  131. case "integer":return /^[-\+]?\d+$/.test($pintu);break;
  132. case "plusinteger":return /^[+]?\d+$/.test($pintu);break;
  133. case "double":return /^[-\+]?\d+(\.\d+)?$/.test($pintu);break;
  134. case "plusdouble":return /^[+]?\d+(\.\d+)?$/.test($pintu);break;
  135. case "english":return /^[A-Za-z]+$/.test($pintu);break;
  136. case "username":return /^[a-z]\w{3,}$/i.test($pintu);break;
  137. case "mobile":return /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$|170\d{8}?$|147\d{8}?$/.test($pintu);break;
  138. case "phone":return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test($pintu);break;
  139. case "tel":return /^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}?$|15[89]\d{8}?$|170\d{8}?$|147\d{8}?$/.test($pintu) || /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test($pintu);break;
  140. case "email":return /^[^@]+@[^@]+\.[^@]+$/.test($pintu);break;
  141. case "url":return /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/.test($pintu);break;
  142. case "ip":return /^[\d\.]{7,15}$/.test($pintu);break;
  143. case "qq":return /^[1-9]\d{4,10}$/.test($pintu);break;
  144. case "currency":return /^\d+(\.\d+)?$/.test($pintu);break;
  145. case "zip":return /^[1-9]\d{5}$/.test($pintu);break;
  146. case "radio":
  147. var radio=element.closest('form').find('input[name="'+element.attr("name")+'"]:checked').length;
  148. return eval(radio==1);
  149. break;
  150. default:
  151. var $test=type.split('#');
  152. if($test.length>1){
  153. switch($test[0]){
  154. case "compare":
  155. return eval(Number($pintu)+$test[1]);
  156. break;
  157. case "regexp":
  158. return new RegExp($test[1],"gi").test($pintu);
  159. break;
  160. case "length":
  161. var $length;
  162. if(element.attr("type")=="checkbox"){
  163. $length=element.closest('form').find('input[name="'+element.attr("name")+'"]:checked').length;
  164. }else{
  165. $length=$pintu.replace(/[\u4e00-\u9fa5]/g,"***").length;
  166. }
  167. return eval($length+$test[1]);
  168. break;
  169. case "ajax":
  170. var $getdata;
  171. var $url=$test[1]+$pintu;
  172. $.ajaxSetup({async:false});
  173. $.getJSON($url,function(data){
  174. //alert(data.getdata);
  175. $getdata=data.getdata;
  176. });
  177. if($getdata=="true"){return true;}
  178. break;
  179. case "repeat":
  180. return $pintu==jQuery('input[name="'+$test[1]+'"]').eq(0).val();
  181. break;
  182. default:return true;break;
  183. }
  184. break;
  185. }else{
  186. return true;
  187. }
  188. }
  189. };
  190. $('form').submit(function(){
  191. $(this).find('input[data-validate],textarea[data-validate],select[data-validate]').trigger("blur");
  192. $(this).find('input[placeholder],textarea[placeholder]').each(function(){$hideplaceholder($(this));});
  193. var numError = $(this).find('.check-error').length;
  194. if(numError){
  195. $(this).find('.check-error').first().find('input[data-validate],textarea[data-validate],select[data-validate]').first().focus().select();
  196. return false;
  197. }
  198. });
  199. $('.form-reset').click(function(){
  200. $(this).closest('form').find(".input-help").remove();
  201. $(this).closest('form').find('.form-submit').removeAttr('disabled');
  202. $(this).closest('form').find('.form-group').removeClass("check-error");
  203. $(this).closest('form').find('.form-group').removeClass("check-success");
  204. });
  205. $('.tab .tab-nav li').each(function(){
  206. var e=$(this);
  207. var trigger=e.closest('.tab').attr("data-toggle");
  208. if (trigger=="hover"){
  209. e.mouseover(function(){
  210. $showtabs(e);
  211. });
  212. e.click(function(){
  213. return false;
  214. });
  215. }else{
  216. e.click(function(){
  217. $showtabs(e);
  218. return false;
  219. });
  220. }
  221. });
  222. $showtabs=function(e){
  223. var detail=e.children("a").attr("href");
  224. e.closest('.tab .tab-nav').find("li").removeClass("active");
  225. e.closest('.tab').find(".tab-body .tab-panel").removeClass("active");
  226. e.addClass("active");
  227. $(detail).addClass("active");
  228. };
  229. $('.dialogs').each(function(){
  230. var e=$(this);
  231. var trigger=e.attr("data-toggle");
  232. if (trigger=="hover"){
  233. e.mouseover(function(){
  234. $showdialogs(e);
  235. });
  236. }else if(trigger=="click"){
  237. e.click(function(){
  238. $showdialogs(e);
  239. });
  240. }
  241. });
  242. $showdialogs=function(e){
  243. var trigger=e.attr("data-toggle");
  244. var getid=e.attr("data-target");
  245. var data=e.attr("data-url");
  246. var mask=e.attr("data-mask");
  247. var width=e.attr("data-width");
  248. var detail="";
  249. var masklayout=$('<div class="dialog-mask"></div>');
  250. if(width==null){width="80%";}
  251. if (mask=="1"){
  252. $("body").append(masklayout);
  253. }
  254. detail='<div class="dialog-win" style="position:fixed;width:'+width+';z-index:11;">';
  255. if(getid!=null){detail=detail+$(getid).html();}
  256. if(data!=null){detail=detail+$.ajax({url:data,async:false}).responseText;}
  257. //alert(detail);
  258. detail=detail+'</div>';
  259. var win=$(detail);
  260. win.find(".dialog").addClass("open");
  261. $("body").append(win);
  262. var x=parseInt($(window).width()-win.outerWidth())/2;
  263. var y=parseInt($(window).height()-win.outerHeight())/2;
  264. if (y<=10){y="10"}
  265. win.css({"left":x,"top":y});
  266. win.find(".dialog-close,.close").each(function(){
  267. $(this).click(function(){
  268. win.remove();
  269. $('.dialog-mask').remove();
  270. });
  271. });
  272. masklayout.click(function(){
  273. win.remove();
  274. $(this).remove();
  275. });
  276. };
  277. $('.tips').each(function(){
  278. var e=$(this);
  279. var title=e.attr("title");
  280. var trigger=e.attr("data-toggle");
  281. e.attr("title","");
  282. if (trigger=="" || trigger==null){trigger="hover";}
  283. if (trigger=="hover"){
  284. e.mouseover(function(){
  285. $showtips(e,title);
  286. });
  287. }else if(trigger=="click"){
  288. e.click(function(){
  289. $showtips(e,title);
  290. });
  291. }else if(trigger=="show"){
  292. e.ready(function(){
  293. $showtips(e,title);
  294. });
  295. }
  296. });
  297. $showtips=function(e,title){
  298. var trigger=e.attr("data-toggle");
  299. var place=e.attr("data-place");
  300. var width=e.attr("data-width");
  301. var css=e.attr("data-style");
  302. var image=e.attr("data-image");
  303. var content=e.attr("content");
  304. var getid=e.attr("data-target");
  305. var data=e.attr("data-url");
  306. var x=0;
  307. var y=0;
  308. var html="";
  309. var detail="";
  310. if(image!=null){detail=detail+'<img class="image" src="'+image+'" />';}
  311. if(content!=null){detail=detail+'<p class="tip-body">'+content+'</p>';}
  312. if(getid!=null){detail=detail+$(getid).html();}
  313. if(data!=null){detail=detail+$.ajax({url:data,async:false}).responseText;}
  314. if(title!=null && title!=""){
  315. if(detail!=null && detail!=""){detail='<p class="tip-title"><strong>'+title+'</strong></p>'+detail;}else{detail='<p class="tip-line">'+title+'</p>';}
  316. }
  317. detail='<div class="tip">'+detail+'</div>';
  318. html=$(detail);
  319. $("body").append( html );
  320. if(width!=null){
  321. html.css("width",width);
  322. }
  323. if(place=="" || place==null){place="top";}
  324. if(place=="left"){
  325. x=e.offset().left - html.outerWidth()-5;
  326. y=e.offset().top - html.outerHeight()/2 + e.outerHeight()/2;
  327. }else if(place=="top"){
  328. x=e.offset().left - html.outerWidth()/2 + e.outerWidth()/2;
  329. y=e.offset().top - html.outerHeight()-5;
  330. }else if(place=="right"){
  331. x=e.offset().left + e.outerWidth()+5;
  332. y=e.offset().top - html.outerHeight()/2 + e.outerHeight()/2;
  333. }else if(place=="bottom"){
  334. x=e.offset().left - html.outerWidth()/2 + e.outerWidth()/2;
  335. y=e.offset().top + e.outerHeight()+5;
  336. }
  337. if (css!=""){html.addClass(css);}
  338. html.css({"left":x+"px","top":y+"px","position":"absolute"});
  339. if (trigger=="hover" || trigger=="click" || trigger==null){
  340. e.mouseout(function(){html.remove();e.attr("title",title)});
  341. }
  342. };
  343. $('.alert .close').each(function(){
  344. $(this).click(function(){
  345. $(this).closest('.alert').remove();
  346. });
  347. });
  348. $('.radio label').each(function(){
  349. var e=$(this);
  350. e.click(function(){
  351. e.closest('.radio').find("label").removeClass("active");
  352. e.addClass("active");
  353. });
  354. });
  355. $('.checkbox label').each(function(){
  356. var e=$(this);
  357. e.click(function(){
  358. if(e.find('input').is(':checked')){
  359. e.addClass("active");
  360. }else{
  361. e.removeClass("active");
  362. };
  363. });
  364. });
  365. $('.collapse .panel-head').each(function(){
  366. var e=$(this);
  367. e.click(function(){
  368. e.closest('.collapse').find(".panel").removeClass("active");
  369. e.closest('.panel').addClass("active");
  370. });
  371. });
  372. $('.icon-navicon').each(function(){
  373. var e=$(this);
  374. var target=e.attr("data-target");
  375. e.click(function(){
  376. $(target).toggleClass("nav-navicon");
  377. });
  378. });
  379. $('.banner').each(function(){
  380. var e=$(this);
  381. var pointer=e.attr("data-pointer");
  382. var interval=e.attr("data-interval");
  383. var style=e.attr("data-style");
  384. var items=e.attr("data-item");
  385. var items_s=e.attr("data-small");
  386. var items_m=e.attr("data-middle");
  387. var items_b=e.attr("data-big");
  388. var num=e.find(".carousel .item").length;
  389. var win=$(window).width();
  390. var i=1;
  391. if(interval==null){interval=5};
  392. if(items==null || items<1){items=1};
  393. if(items_s!=null && win>760){items=items_s};
  394. if(items_m!=null && win>1000){items=items_m};
  395. if(items_b!=null && win>1200){items=items_b};
  396. var itemWidth=Math.ceil(e.outerWidth()/items);
  397. var page=Math.ceil(num/items);
  398. e.find(".carousel .item").css("width",itemWidth+ "px");
  399. e.find(".carousel").css("width",itemWidth*num + "px");
  400. var carousel=function(){
  401. i++;
  402. if(i>page){i=1;}
  403. $showbanner(e,i,items,num);
  404. };
  405. var play=setInterval(carousel,interval*600);
  406. e.mouseover(function(){clearInterval(play);});
  407. e.mouseout(function(){play=setInterval(carousel,interval*600);});
  408. if(pointer!=0 && page>1){
  409. var point='<ul class="pointer"><li value="1" class="active"></li>';
  410. for (var j=1;j<page;j++){
  411. point=point+' <li value="'+(j+1)+'"></li>';
  412. };
  413. point=point+'</ul>';
  414. var pager=$(point);
  415. if(style!=null){pager.addClass(style);};
  416. e.append(pager);
  417. pager.css("left",e.outerWidth()*0.5 - pager.outerWidth()*0.5+"px");
  418. pager.find("li").click(function(){
  419. $showbanner(e,$(this).val(),items,num);
  420. });
  421. var lefter=$('<div class="pager-prev icon-angle-left"></div>');
  422. var righter=$('<div class="pager-next icon-angle-right"></div>');
  423. if(style!=null){lefter.addClass(style);righter.addClass(style);};
  424. e.append(lefter);
  425. e.append(righter);
  426. lefter.click(function(){
  427. i--;
  428. if(i<1){i=page;}
  429. $showbanner(e,i,items,num);
  430. });
  431. righter.click(function(){
  432. i++;
  433. if(i>page){i=1;}
  434. $showbanner(e,i,items,num);
  435. });
  436. };
  437. });
  438. $showbanner=function(e,i,items,num){
  439. var after=0,leftx=0;
  440. leftx = - Math.ceil(e.outerWidth()/items)*(items)*(i-1);
  441. if(i*items > num){after=i*items-num;leftx= - Math.ceil(e.outerWidth()/items)*(num-items);};
  442. e.find(".carousel").stop(true, true).animate({"left":leftx+"px"},800);
  443. e.find(".pointer li").removeClass("active");
  444. e.find(".pointer li").eq(i-1).addClass("active");
  445. };
  446. $(".spy a").each(function(){
  447. var e=$(this);
  448. var t=e.closest(".spy");
  449. var target=t.attr("data-target");
  450. var top=t.attr("data-offset-spy");
  451. var thistarget="";
  452. var thistop="";
  453. if(top==null){top=0;};
  454. if(target==null){thistarget=$(window);}else{thistarget=$(target);};
  455. thistarget.bind("scroll",function(){
  456. if(target==null){
  457. thistop=$(e.attr("href")).offset().top - $(window).scrollTop() - parseInt(top);
  458. }else{
  459. thistop=$(e.attr("href")).offset().top - thistarget.offset().top - parseInt(top);
  460. };
  461. if(thistop<0){
  462. t.find('li').removeClass("active");
  463. e.parents('li').addClass("active");
  464. };
  465. });
  466. });
  467. $(".fixed").each(function(){
  468. var e=$(this);
  469. var style=e.attr("data-style");
  470. var top=e.attr("data-offset-fixed");
  471. if(top==null){top=e.offset().top;}else{top=e.offset().top - parseInt(top);};
  472. if(style==null){style="fixed-top";};
  473. $(window).bind("scroll",function(){
  474. var thistop=top - $(window).scrollTop();
  475. if(style=="fixed-top" && thistop<0){
  476. e.addClass("fixed-top");
  477. }else{
  478. e.removeClass("fixed-top");
  479. };
  480. var thisbottom=top - $(window).scrollTop()-$(window).height();
  481. if(style=="fixed-bottom" && thisbottom>0){
  482. e.addClass("fixed-bottom");
  483. }else{
  484. e.removeClass("fixed-bottom");
  485. };
  486. });
  487. });
  488. })