H-ui.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  1. /*H-ui.js v2.3 date:9:53 2015-07-17 by:guojunhui*/
  2. if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
  3. var msViewportStyle = document.createElement("style")
  4. msViewportStyle.appendChild(
  5. document.createTextNode(
  6. "@-ms-viewport{width:auto!important}"
  7. )
  8. )
  9. document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
  10. }
  11. /*****宽窄屏幕自适应****/
  12. $(document).ready(function(){
  13. if(screen.width > 1366 && $(window).width() > 1366)
  14. {
  15. window.onresize=function(){ location=location };
  16. $("html").addClass("Narrow");
  17. }
  18. else{
  19. window.onresize=function(){ location=location };
  20. $("html").addClass("Resolution");
  21. }
  22. });/*添加收藏
  23. <a title="收藏本站" href="javascript:;" onClick="addFavoritepage('H-ui前端框架','http://www.h-ui.net/');">收藏本站</a>
  24. */
  25. /*收藏主站*/
  26. function addFavorite(name,site){
  27. try{window.external.addFavorite(site,name);}
  28. catch(e){
  29. try{window.sidebar.addPanel(name,site,"");}
  30. catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");}
  31. }
  32. }
  33. /*收藏页面
  34. <a title="收藏本页" href="javascript:addFavoritepage(0);">收藏本页</a>
  35. */
  36. function addFavoritepage(){var sURL=window.location.href;var sTitle=document.title;try{window.external.addFavorite(sURL,sTitle);}catch(e){try{window.sidebar.addPanel(sTitle,sURL,"");}catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");}}}
  37. /*设为首页*/
  38. function setHome(obj){
  39. try{obj.style.behavior="url(#default#homepage)";obj.setHomePage(webSite);}
  40. catch(e){if(window.netscape){
  41. try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");}
  42. catch(e){alert("此操作被浏览器拒绝!\n请在浏览器地址栏输入\"about:config\"并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");}
  43. var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
  44. prefs.setCharPref('browser.startup.homepage',url);}}
  45. }
  46. /*滚动*/
  47. function marquee(height,speed,delay){
  48. var scrollT;
  49. var pause = false;
  50. var ScrollBox = document.getElementById("marquee");
  51. if(document.getElementById("holder").offsetHeight <= height) return;
  52. var _tmp = ScrollBox.innerHTML.replace('holder', 'holder2')
  53. ScrollBox.innerHTML += _tmp;
  54. ScrollBox.onmouseover = function(){pause = true}
  55. ScrollBox.onmouseout = function(){pause = false}
  56. ScrollBox.scrollTop = 0;
  57. function start(){
  58. scrollT = setInterval(scrolling,speed);
  59. if(!pause) ScrollBox.scrollTop += 2;
  60. }
  61. function scrolling(){
  62. if(ScrollBox.scrollTop % height != 0){
  63. ScrollBox.scrollTop += 2;
  64. if(ScrollBox.scrollTop >= ScrollBox.scrollHeight/2) ScrollBox.scrollTop = 0;
  65. }
  66. else{
  67. clearInterval(scrollT);
  68. setTimeout(start,delay);
  69. }
  70. }
  71. setTimeout(start,delay);
  72. }
  73. /*隐藏显示密码*/
  74. (function ( $ ) {
  75. $.fn.togglePassword = function( options ) {
  76. var s = $.extend( $.fn.togglePassword.defaults, options ),
  77. input = $( this );
  78. $( s.el ).on( s.ev, function() {
  79. "password" == $( input ).attr( "type" ) ?
  80. $( input ).attr( "type", "text" ) :
  81. $( input ).attr( "type", "password" );
  82. });
  83. };
  84. $.fn.togglePassword.defaults = {
  85. ev: "click"
  86. };
  87. }( jQuery ));
  88. !function ($) {
  89. "use strict";
  90. $(function () {
  91. $.support.transition = (function () {
  92. var transitionEnd = (function () {
  93. var el = document.createElement('bootstrap'),
  94. transEndEventNames = {
  95. 'WebkitTransition' : 'webkitTransitionEnd',
  96. 'MozTransition' : 'transitionend',
  97. 'OTransition' : 'oTransitionEnd otransitionend',
  98. 'transition' : 'transitionend'
  99. },
  100. name
  101. for (name in transEndEventNames){
  102. if (el.style[name] !== undefined) {
  103. return transEndEventNames[name]
  104. }
  105. }
  106. }())
  107. return transitionEnd && {
  108. end: transitionEnd
  109. }
  110. })()
  111. });
  112. }(window.jQuery);
  113. /*左侧菜单-隐藏显示*/
  114. function displaynavbar(obj){
  115. if($(obj).hasClass("open")){
  116. $(obj).removeClass("open");
  117. $("body").removeClass("big-page");
  118. }else{
  119. $(obj).addClass("open");
  120. $("body").addClass("big-page");
  121. }
  122. }
  123. /*模拟下拉菜单*/
  124. jQuery.Huiselect = function(divselectid,inputselectid) {
  125. var inputselect = $(inputselectid);
  126. $(divselectid+" cite").click(function(){
  127. var ul = $(divselectid+" ul");
  128. ul.slideToggle();
  129. });
  130. $(divselectid+" ul li a").click(function(){
  131. var txt = $(this).text();
  132. $(divselectid+" cite").html(txt);
  133. var value = $(this).attr("selectid");
  134. inputselect.val(value);
  135. $(divselectid+" ul").hide();
  136. });
  137. $(document).click(function(){$(divselectid+" ul").hide();});
  138. };
  139. /*hover*/
  140. jQuery.Huihover =function(obj) {
  141. $(obj).hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
  142. };
  143. /*得到失去焦点*/
  144. jQuery.Huifocusblur = function(obj) {
  145. $(obj).focus(function() {$(this).addClass("focus").removeClass("inputError");});
  146. $(obj).blur(function() {$(this).removeClass("focus");});
  147. };
  148. /*tab选项卡*/
  149. jQuery.Huitab =function(tabBar,tabCon,class_name,tabEvent,i){
  150. var $tab_menu=$(tabBar);
  151. // 初始化操作
  152. $tab_menu.removeClass(class_name);
  153. $(tabBar).eq(i).addClass(class_name);
  154. $(tabCon).hide();
  155. $(tabCon).eq(i).show();
  156. $tab_menu.on(tabEvent,function(){
  157. $tab_menu.removeClass(class_name);
  158. $(this).addClass(class_name);
  159. var index=$tab_menu.index(this);
  160. $(tabCon).hide();
  161. $(tabCon).eq(index).show();
  162. });
  163. }
  164. /*折叠*/
  165. jQuery.Huifold = function(obj,obj_c,speed,obj_type,Event){
  166. if(obj_type == 2){
  167. $(obj+":first").find("b").html("-");
  168. $(obj_c+":first").show();
  169. }
  170. $(obj).on(Event,function(){
  171. if($(this).next().is(":visible")){
  172. if(obj_type == 2){
  173. return false;
  174. }else{
  175. $(this).next().slideUp(speed).end().removeClass("selected");
  176. if($(this).find("b")){
  177. $(this).find("b").html("+");
  178. }
  179. }
  180. }
  181. else{
  182. if(obj_type == 3){
  183. $(this).next().slideDown(speed).end().addClass("selected");
  184. if($(this).find("b")){
  185. $(this).find("b").html("-");
  186. }
  187. }else{
  188. $(obj_c).slideUp(speed);
  189. $(obj).removeClass("selected");
  190. if($(this).find("b")){
  191. $(obj).find("b").html("+");
  192. }
  193. $(this).next().slideDown(speed).end().addClass("selected");
  194. if($(this).find("b")){
  195. $(this).find("b").html("-");
  196. }
  197. }
  198. }
  199. });
  200. }
  201. /*返回顶部*/
  202. var $backToTopEle=$('<a href="javascript:void(0)" class="Hui-iconfont toTop" title="返回顶部" alt="返回顶部" style="display:none">&#xf0023;</a>').appendTo($("body")).click(function(){
  203. $("html, body").animate({ scrollTop: 0 }, 120);
  204. });
  205. var $backToTopFun = function() {
  206. var st = $(document).scrollTop(), winh = $(window).height();
  207. (st > 0)? $backToTopEle.show(): $backToTopEle.hide();
  208. /*IE6下的定位*/
  209. if(!window.XMLHttpRequest){
  210. $backToTopEle.css("top", st + winh - 166);
  211. }
  212. };
  213. /*textarea 字数限制*/
  214. function textarealength(obj,maxlength){
  215. var v = $(obj).val();
  216. var l = v.length;
  217. if( l > maxlength){
  218. v = v.substring(0,maxlength);
  219. }
  220. $(obj).parent().find(".textarea-length").text(v.length);
  221. }
  222. /*Huimodalalert*/
  223. function Huimodal_alert(info,speed){
  224. $(document.body).append(
  225. '<div id="modal-alert" class="modal hide modal-alert">'+
  226. '<div class="modal-alert-info">'+info+'</div>'+
  227. '</div>'
  228. );
  229. $("#modal-alert").fadeIn();
  230. setTimeout("Huimodal_alert_hide()",speed);
  231. }
  232. function Huimodal_alert_hide() {
  233. $("#modal-alert").fadeOut("normal",function(){
  234. $("#modal-alert").remove();
  235. });
  236. }
  237. /*设置cookie*/
  238. function setCookie(name, value, Days){
  239. if(Days == null || Days == ''){
  240. Days = 300;
  241. }
  242. var exp = new Date();
  243. exp.setTime(exp.getTime() + Days*24*60*60*1000);
  244. document.cookie = name + "="+ escape (value) + "; path=/;expires=" + exp.toGMTString();
  245. }
  246. /*获取cookie*/
  247. function getCookie(name) {
  248. var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
  249. if(arr=document.cookie.match(reg))
  250. return unescape(arr[2]);
  251. else
  252. return null;
  253. }
  254. $(function(){
  255. /*****表单*****/
  256. $.Huifocusblur(".input-text,.textarea");
  257. /*按钮loading*/
  258. $('.btn-loading').click(function () {
  259. var $btn = $(this);
  260. var btnval = $btn.val();
  261. $btn.addClass("disabled").val("loading").attr("disabled","disabled");
  262. setTimeout(function(){
  263. $btn.removeClass("disabled").val(btnval).removeAttr("disabled");
  264. }, 3000);
  265. });
  266. /**/
  267. $.Huiselect("#divselect","#inputselect");
  268. /*全选*/
  269. $("table thead th input:checkbox").on("click" , function(){
  270. $(this).closest("table").find("tr > td:first-child input:checkbox").prop("checked",$("table thead th input:checkbox").prop("checked"));
  271. });
  272. /*上传*/
  273. $(document).on("change",".input-file",function(){
  274. var uploadVal=$(this).val();
  275. $(this).parent().find(".upload-url").val(uploadVal).focus().blur();
  276. });
  277. /*下拉菜单*/
  278. $(document).on("mouseenter",".dropDown",function(){
  279. $(this).addClass("hover");
  280. });
  281. $(document).on("mouseleave",".dropDown",function(){
  282. $(this).removeClass("hover");
  283. });
  284. $(document).on("mouseenter",".dropDown_hover",function(){
  285. $(this).addClass("open");
  286. });
  287. $(document).on("mouseleave",".dropDown_hover",function(){
  288. $(this).removeClass("open");
  289. });
  290. $(document).on("click",".dropDown-menu li a",function(){
  291. $(".dropDown").removeClass('open');
  292. });
  293. $(document).on('click', function(event){
  294. var e_t = $(event.target).parents('.dropDown_click');
  295. if($(".dropDown_click").hasClass('open')){
  296. if(e_t.hasClass('open')){
  297. e_t.removeClass('open');
  298. return;
  299. }
  300. $(".dropDown_click").removeClass('open');
  301. e_t.toggleClass('open');
  302. }else{
  303. e_t.toggleClass('open');
  304. }
  305. });
  306. /*搜索框*/
  307. $.Huifocusblur('.searchTxt');
  308. $.Huihover('.ac_results li');
  309. $(".ac_results li").click(function (event){
  310. $(".searchTxt").addClass("focus").val($(this).find("p").text());
  311. $(".ac_results").hide();
  312. //$(".form-search").submit();/*提交表单*/
  313. b_onclick();/*临时测试*/
  314. return false;
  315. });
  316. $(".searchTxt").focus(function(){$(".ac_results").show();return false;});
  317. $(".ac_results").blur(function(){$(this).hide();});
  318. $("body").click(function(){$(".ac_results").hide();});
  319. $(".searchTxt").click(function(){$(".ac_results").show();return false;});
  320. function BindEnter(obj){
  321. var searchBtn = $("#searchBtn");
  322. if(obj.keyCode == 13){searchBtn.click();obj.returnValue = false;}
  323. }
  324. /*tag标签*/
  325. var tags_a = $(".tags a");
  326. tags_a.each(function(){
  327. var x = 9;
  328. var y = 0;
  329. var rand = parseInt(Math.random() * (x - y + 1) + y);
  330. $(this).addClass("tags"+rand);
  331. });
  332. /*对联广告*/
  333. var dual = $(".dual");
  334. var dual_close = $("a.dual_close");
  335. var screen_w = screen.width;
  336. if(screen_w>1024){dual.show();}
  337. $(window).scroll(function(){
  338. var scrollTop = $(window).scrollTop();
  339. dual.stop().animate({top:scrollTop+260});
  340. });
  341. dual_close.click(function(){
  342. $(this).parent().hide();
  343. return false;
  344. });
  345. /*顶部展开定时自动关闭广告*/
  346. $("#banner").slideDown("slow");
  347. /*图片预览*/
  348. $("a.preview").hover(
  349. function(){
  350. $(this).addClass("active");
  351. $("#tooltip-preview").remove();
  352. var winW=$(window).width();
  353. var winW5=winW/2;
  354. this.myTitle = this.title;
  355. this.title = "";
  356. var midimg = $(this).attr('data-preview');
  357. if(midimg ==''){return false;}
  358. else{
  359. var imgT=$(this).parents(".imgItem").offset().top;
  360. var imgL=$(this).parents(".imgItem").offset().left;
  361. var imgW=$(this).parents(".imgItem").width();
  362. var imgH=$(this).parents(".imgItem").height();
  363. var ww=(imgL+imgW/2);
  364. if(ww < winW5){
  365. var tooltipLeft=(imgW+imgL)+"px";
  366. }
  367. else{
  368. var tooltipRight=(winW-imgL)+"px";
  369. }
  370. var tooltip_keleyi_com = "<div id='tooltip-preview' style='top:"+ imgT +"px;right:"+ tooltipRight +";left:"+ tooltipLeft +"'><span id='tooltip-keleyi-div' class='loading' style='width:50px; height:50px'></span></div>";
  371. $("body").append(tooltip_keleyi_com);
  372. var midimgW = $(this).attr('data-width');
  373. var midimgH = $(this).attr('data-height');
  374. var imgTitle = this.myTitle ? "<br />" + this.myTitle + " 产品预览图" : "";
  375. /*图片预加载*/
  376. var image = new Image();/*创建一个Image对象*/
  377. image.onload = function () {
  378. if($('a.preview.active').attr('data-preview') == midimg){
  379. var midingW2 = this.width;
  380. var midingH2 = this.height;
  381. $("#tooltip-keleyi-div").css({"width":midingW2+"px","height":midingH2+"px"});
  382. $('#tooltip-keleyi-div').append(this);
  383. }
  384. };
  385. image.src = midimg;
  386. }
  387. },
  388. function(){
  389. $(this).removeClass("active");
  390. this.title = this.myTitle;
  391. $("#tooltip-preview").remove();
  392. }
  393. );
  394. /*Huialert*/
  395. $.Huihover('.Huialert i');
  396. $(".Huialert i").on("click",function(){
  397. var Huialert = $(this).parents(".Huialert");
  398. Huialert.fadeOut("normal",function(){
  399. Huialert.remove();
  400. });
  401. });
  402. /*tag标签*/
  403. var time1;
  404. $(".Hui-tags-lable").show();
  405. $(".Hui-tags-input").val("");
  406. $(document).on("blur",".Hui-tags-input",function(){
  407. time1 = setTimeout(function(){
  408. $(this).parents(".Hui-tags").find(".Hui-tags-list").slideUp();
  409. }, 400);
  410. });
  411. $(document).on("focus",".Hui-tags-input",function(){
  412. clearTimeout(time1);
  413. });
  414. $(document).on("click",".Hui-tags-input",function(){
  415. $(this).find(".Hui-tags-input").focus();
  416. $(this).find(".Hui-tags-list").slideDown();
  417. });
  418. function gettagval(obj){
  419. var str ="";
  420. var token =$(obj).parents(".Hui-tags").find(".Hui-tags-token");
  421. //alert(token.length)
  422. if(token.length<1){
  423. $(obj).parents(".Hui-tags").find(".Hui-tags-val").val("");
  424. return false;
  425. }
  426. for(var i = 0;i< token.length;i++){
  427. str += token.eq(i).text() + ",";
  428. $(obj).parents(".Hui-tags").find(".Hui-tags-val").val(str);
  429. }
  430. }
  431. $(document).on("keydown",".Hui-tags-input",function(event){
  432. $(this).next().hide();
  433. var v = $(this).val().replace(/\s+/g, "");
  434. var reg=/^,|,$/gi;
  435. v=v.replace(reg,"");
  436. v=$.trim(v);
  437. var token =$(this).parents(".Hui-tags").find(".Hui-tags-token");
  438. if(v!=''){
  439. if(event.keyCode==13||event.keyCode==108||event.keyCode==32){
  440. $('<span class="Hui-tags-token">'+v+'</span>').insertBefore($(this).parents(".Hui-tags").find(".Hui-tags-iptwrap"));
  441. $(this).val("");
  442. gettagval(this);
  443. }
  444. }else{
  445. if(event.keyCode==8){
  446. if(token.length>=1){
  447. $(this).parents(".Hui-tags").find(".Hui-tags-token:last").remove();
  448. gettagval(this);
  449. }
  450. else{
  451. $(this).parents(".Hui-tags").find(".Hui-tags-lable").show();
  452. return false;
  453. }
  454. }
  455. }
  456. });
  457. $(document).on("click",".Hui-tags-has span",function(){
  458. var taghasV = $(this).text();
  459. taghasV=taghasV.replace(/(^\s*)|(\s*$)/g,"");
  460. $('<span class="Hui-tags-token">'+taghasV+'</span>').insertBefore($(this).parents(".Hui-tags").find(".Hui-tags-iptwrap"));
  461. gettagval(this);
  462. $(this).parents(".Hui-tags").find(".Hui-tags-input").focus();
  463. });
  464. $(document).on("click",".Hui-tags-token",function(){
  465. var token =$(this).parents(".Hui-tags").find(".Hui-tags-token");
  466. var it = $(this).parents(".Hui-tags");
  467. $(this).remove();
  468. switch(token.length){
  469. case 1 : it.find(".Hui-tags-lable").show();
  470. break;
  471. }
  472. var str ="";
  473. var token =it.find(".Hui-tags-token");
  474. //alert(token.length)
  475. if(token.length<1){
  476. it.find(".Hui-tags-val").val("");
  477. return false;
  478. }
  479. for(var i = 0;i< token.length;i++){
  480. str += token.eq(i).text() + ",";
  481. it.find(".Hui-tags-val").val(str);
  482. }
  483. });
  484. });
  485. function displayimg(){
  486. $("#banner").slideUp(1000,function(){
  487. $("#top").slideDown(1000);
  488. });
  489. }
  490. setTimeout("displayimg()",4000);
  491. /*placeholder兼容性处理*/
  492. (function(window, document, $) {
  493. var isInputSupported = 'placeholder' in document.createElement('input');
  494. var isTextareaSupported = 'placeholder' in document.createElement('textarea');
  495. var prototype = $.fn;
  496. var valHooks = $.valHooks;
  497. var propHooks = $.propHooks;
  498. var hooks;
  499. var placeholder;
  500. if (isInputSupported && isTextareaSupported) {
  501. placeholder = prototype.placeholder = function() {
  502. return this;
  503. };
  504. placeholder.input = placeholder.textarea = true;
  505. } else {
  506. placeholder = prototype.placeholder = function() {
  507. var $this = this;
  508. $this
  509. .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
  510. .not('.placeholder')
  511. .bind({
  512. 'focus.placeholder': clearPlaceholder,
  513. 'blur.placeholder': setPlaceholder
  514. })
  515. .data('placeholder-enabled', true)
  516. .trigger('blur.placeholder');
  517. return $this;
  518. };
  519. placeholder.input = isInputSupported;
  520. placeholder.textarea = isTextareaSupported;
  521. hooks = {
  522. 'get': function(element) {
  523. var $element = $(element);
  524. var $passwordInput = $element.data('placeholder-password');
  525. if ($passwordInput) {
  526. return $passwordInput[0].value;
  527. }
  528. return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
  529. },
  530. 'set': function(element, value) {
  531. var $element = $(element);
  532. var $passwordInput = $element.data('placeholder-password');
  533. if ($passwordInput) {
  534. return $passwordInput[0].value = value;
  535. }
  536. if (!$element.data('placeholder-enabled')) {
  537. return element.value = value;
  538. }
  539. if (value == '') {
  540. element.value = value;
  541. if (element != safeActiveElement()) {
  542. setPlaceholder.call(element);
  543. }
  544. } else if ($element.hasClass('placeholder')) {
  545. clearPlaceholder.call(element, true, value) || (element.value = value);
  546. } else {
  547. element.value = value;
  548. }
  549. return $element;
  550. }
  551. };
  552. if (!isInputSupported) {
  553. valHooks.input = hooks;
  554. propHooks.value = hooks;
  555. }
  556. if (!isTextareaSupported) {
  557. valHooks.textarea = hooks;
  558. propHooks.value = hooks;
  559. }
  560. $(function() {
  561. $(document).delegate('form', 'submit.placeholder', function() {
  562. var $inputs = $('.placeholder', this).each(clearPlaceholder);
  563. setTimeout(function() {
  564. $inputs.each(setPlaceholder);
  565. }, 10);
  566. });
  567. });
  568. $(window).bind('beforeunload.placeholder', function() {
  569. $('.placeholder').each(function() {
  570. this.value = '';
  571. });
  572. });
  573. }
  574. function args(elem) {
  575. var newAttrs = {};
  576. var rinlinejQuery = /^jQuery\d+$/;
  577. $.each(elem.attributes, function(i, attr) {
  578. if (attr.specified && !rinlinejQuery.test(attr.name)) {
  579. newAttrs[attr.name] = attr.value;
  580. }
  581. });
  582. return newAttrs;
  583. }
  584. function clearPlaceholder(event, value) {
  585. var input = this;
  586. var $input = $(input);
  587. if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
  588. if ($input.data('placeholder-password')) {
  589. $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
  590. if (event === true) {
  591. return $input[0].value = value;
  592. }
  593. $input.focus();
  594. } else {
  595. input.value = '';
  596. $input.removeClass('placeholder');
  597. input == safeActiveElement() && input.select();
  598. }
  599. }
  600. }
  601. function setPlaceholder() {
  602. var $replacement;
  603. var input = this;
  604. var $input = $(input);
  605. var id = this.id;
  606. if (input.value == '') {
  607. if (input.type == 'password') {
  608. if (!$input.data('placeholder-textinput')) {
  609. try {
  610. $replacement = $input.clone().prop('type','text');
  611. } catch(e) {
  612. $replacement = $('<input>').prop($.extend(args(this), { 'type': 'text' }));
  613. }
  614. $replacement
  615. .removeAttr('name')
  616. .data({
  617. 'placeholder-password': $input,
  618. 'placeholder-id': id
  619. })
  620. .bind('focus.placeholder', clearPlaceholder);
  621. $input
  622. .data({
  623. 'placeholder-textinput': $replacement,
  624. 'placeholder-id': id
  625. })
  626. .before($replacement);
  627. }
  628. $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
  629. }
  630. $input.addClass('placeholder');
  631. $input[0].value = $input.attr('placeholder');
  632. } else {
  633. $input.removeClass('placeholder');
  634. }
  635. }
  636. function safeActiveElement() {
  637. try {
  638. return document.activeElement;
  639. } catch (exception) {}
  640. }
  641. }(this, document, jQuery));