Clone
placeholder.min.js
!function(e){"use strict";function t(e,t,r){return e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent?e.attachEvent("on"+t,r):void 0}function r(e,t){var r,n;for(r=0,n=e.length;n>r;r++)if(e[r]===t)return!0;return!1}function n(e,t){var r;e.createTextRange?(r=e.createTextRange(),r.move("character",t),r.select()):e.selectionStart&&(e.focus(),e.setSelectionRange(t,t))}function a(e,t){try{return e.type=t,!0}catch(r){return!1}}e.Placeholders={Utils:{addEventListener:t,inArray:r,moveCaret:n,changeType:a}}}(this),function(e){"use strict";function t(){}function r(e){var t;return e.value===e.getAttribute(V)&&"true"===e.getAttribute(D)?(e.setAttribute(D,"false"),e.value="",e.className=e.className.replace(R,""),t=e.getAttribute(I),t&&(e.type=t),!0):!1}function n(e){var t,r=e.getAttribute(V);return""===e.value&&r?(e.setAttribute(D,"true"),e.value=r,e.className+=" "+k,t=e.getAttribute(I),t?e.type="text":"password"===e.type&&J.changeType(e,"text")&&e.setAttribute(I,"password"),!0):!1}function a(e,t){var r,n,a,u,i;if(e&&e.getAttribute(V))t(e);else for(r=e?e.getElementsByTagName("input"):v,n=e?e.getElementsByTagName("textarea"):f,i=0,u=r.length+n.length;u>i;i++)a=i<r.length?r[i]:n[i-r.length],t(a)}function u(e){a(e,r)}function i(e){a(e,n)}function l(e){return function(){b&&e.value===e.getAttribute(V)&&"true"===e.getAttribute(D)?J.moveCaret(e,0):r(e)}}function c(e){return function(){n(e)}}function o(e){return function(t){return m=e.value,"true"===e.getAttribute(D)&&m===e.getAttribute(V)&&J.inArray(C,t.keyCode)?(t.preventDefault&&t.preventDefault(),!1):void 0}}function s(e){return function(){var t;"true"===e.getAttribute(D)&&e.value!==m&&(e.className=e.className.replace(R,""),e.value=e.value.replace(e.getAttribute(V),""),e.setAttribute(D,!1),t=e.getAttribute(I),t&&(e.type=t)),""===e.value&&(e.blur(),J.moveCaret(e,0))}}function d(e){return function(){e===document.activeElement&&e.value===e.getAttribute(V)&&"true"===e.getAttribute(D)&&J.moveCaret(e,0)}}function g(e){return function(){u(e)}}function p(e){e.form&&(T=e.form,T.getAttribute(P)||(J.addEventListener(T,"submit",g(T)),T.setAttribute(P,"true"))),J.addEventListener(e,"focus",l(e)),J.addEventListener(e,"blur",c(e)),b&&(J.addEventListener(e,"keydown",o(e)),J.addEventListener(e,"keyup",s(e)),J.addEventListener(e,"click",d(e))),e.setAttribute(U,"true"),e.setAttribute(V,E),n(e)}var v,f,b,h,m,A,y,E,x,T,N,L,S,w=["text","search","url","tel","email","password","number","textarea"],C=[27,33,34,35,36,37,38,39,40,8,46],B="#ccc",k="placeholdersjs",R=new RegExp("(?:^|\\s)"+k+"(?!\\S)"),V="data-placeholder-value",D="data-placeholder-active",I="data-placeholder-type",P="data-placeholder-submit",U="data-placeholder-bound",j="data-placeholder-focus",q="data-placeholder-live",z=document.createElement("input"),F=document.getElementsByTagName("head")[0],G=document.documentElement,H=e.Placeholders,J=H.Utils;if(H.nativeSupport=void 0!==z.placeholder,!H.nativeSupport){for(v=document.getElementsByTagName("input"),f=document.getElementsByTagName("textarea"),b="false"===G.getAttribute(j),h="false"!==G.getAttribute(q),A=document.createElement("style"),A.type="text/css",y=document.createTextNode("."+k+" { color:"+B+"; }"),A.styleSheet?A.styleSheet.cssText=y.nodeValue:A.appendChild(y),F.insertBefore(A,F.firstChild),S=0,L=v.length+f.length;L>S;S++)N=S<v.length?v[S]:f[S-v.length],E=N.attributes.placeholder,E&&(E=E.nodeValue,E&&J.inArray(w,N.type)&&p(N));x=setInterval(function(){for(S=0,L=v.length+f.length;L>S;S++)N=S<v.length?v[S]:f[S-v.length],E=N.attributes.placeholder,E&&(E=E.nodeValue,E&&J.inArray(w,N.type)&&(N.getAttribute(U)||p(N),(E!==N.getAttribute(V)||"password"===N.type&&!N.getAttribute(I))&&("password"===N.type&&!N.getAttribute(I)&&J.changeType(N,"text")&&N.setAttribute(I,"password"),N.value===N.getAttribute(V)&&(N.value=E),N.setAttribute(V,E))));h||clearInterval(x)},100)}H.disable=H.nativeSupport?t:u,H.enable=H.nativeSupport?t:i}(this);