Placeholders.js Monkey Patch ν΄μ€
μ΄μ κΈμΈ IE8 μμ input νκ·Έμ textarea νκ·Έμ placeholder μμ± μ μ©νκΈ°μμ Placeholders.jsλ₯Ό μ΄μ©νλ©΄ jquery.placeholder νλ¬κ·ΈμΈλ³΄λ€ μ¬λ¬λͺ¨λ‘ μ¬μ©μ΄ νΈλ¦¬νλ€κ³ μΈκΈν μ μ΄ μλ€.
κ·Έλ°λ°, μ΄ Placeholderes.js μμλ λ€λ₯Έ DOM μ리먼νΈλ€μ μ΄λ²€νΈλ€μμλ κΈ°λνλ λλ‘ μλνμ§ μλ κ²½μ°κ° μλ€. μ΄λ° κ²½μ°λ₯Ό 보μ νκΈ° μν΄μ Placeholders.js Monkey Patchλ₯Ό λ§λ€μ΄μ λ°°ν¬νκ² λλ€. Placehoders.jsλ λͺ¨λ input:text μ리먼νΈμ textarea μ리먼νΈμ λͺκ°μ§ λΉνμ€ μμ±μ μΆκ°νλ ν΄λ¦¬ν (polyfill) ννλ‘ μ΄λ£¨μ΄μ§λ€. κ·Έμ€μ λͺκ°μ§ μλ₯Ό λ€μλ©΄ μλμ κ°μ κ²λ€μ΄ μλ€.
data-placeholder-value
data-placeholder-active
data-placeholder-bound
μ΄ μΈκ°μ§κ° input:text μ리λ©νΈμ μ°μ΄λ λνμ μΈ ν΄λ¦¬ν μμ±λ€μ΄λ€. IE8μμ Placeholders.jsλ₯Ό μ μ©ν νμ΄μ§λ₯Ό μ΄μ΄λ³΄λ©΄ μλμ κ°μ ννλ‘ λ³΄μ΄λ κ²μ μ μ μλ€.
<input type="text" id="username" class="placehldersjs" name="username" placeholder="Username" data-placeholder-value="Username" data-placeholder-bound="true" data-placeholder-active="true" value="Username" />
Placeholders.jsλ placeholder μμ±μ μ¬μ©ν μ μκΈ° λλ¬Έμ, placeholder μμ±κ°μ λμ value μμ±κ°μ λ£μ΄μ£Όκ³ , κ·Έκ²μ placeholdersjs λΌλ CSS ν΄λΌμ€λ₯Ό μ΄μ©ν΄ μμμ μ‘°μ νλ€. placeholdersjs ν΄λΌμ€μ κΈ°λ³Έκ°μ #cccμ΄λ€. λ¬Όλ‘ ν΄λΉνλ input μ리먼νΈμ μ΄λ―Έ κ°μ΄ μλ€λ©΄ μλμ κ°μ ννλ‘ λνλκ² λλ€.
<input type="text" id="username" name="username" placeholder="Username" value="joebloggs" />
κ·Έλ°λ°, λ¬Έμ λ λ€λ₯Έ DOM μ리먼νΈλ€κ³Ό μνΈμμ©μ νλ©΄μ μ΄ ν΄λ¦¬νλ€μ΄ μ λλ‘ μλμ νμ§ μλ κ²½μ°κ° μλ€. μλ₯Ό λ€μ΄μ λλ‘λ€μ΄λ¦¬μ€νΈμμ κ°μ λ°κΏ λμ κ°μ νμλ€μ΄ λ°λ‘ κ·Έκ²μΈλ°, κ·Έλ΄ λ μ΄ λͺ½ν€ ν¨μΉκ° μν μ νκ² λλ€. μΌλ°μ μΌλ‘ μ΄ Placeholders.js μλ°μ€ν¬λ¦½νΈλ IE9 μ΄νμμλ§ μ μ©μν€λ©΄ λκΈ° λλ¬Έμ μλμ κ°μ ννλ‘ νΈμΆνλ€.
<!--[if lte IE 9]> <script type="text/javascript" src="js/Placeholders.min.js"></script> <![endif]-->
λ§μ°¬κ°μ§λ‘ λͺ½ν€ ν¨μΉ μμλ μλμ κ°μ ννλ‘ νΈμΆμ νλ©΄ λ€λ₯Έ λΈλΌμ°μ νΉμ IE10 μ΄μμμλ μν₯μ λ°μ§ μλλ€.
<!--[if lte IE 9]> <script type="text/javascript" src="js/jquery.Placeholders.monkey.patch.js"></script> <![endif]-->
input:textμ textarea μλ¦¬λ¨Όμ€ μμ± μ¬μ€μ
μ΄λ κ² νΈμΆμ ν΄λμ μνμμλ λͺ½ν€ν¨μΉμμ μ μΈν ν¨μλ€μ μ€λ‘μ§ IE9 μ΄νμμλ§ μ¬μ©ν μ μκ² λλ€. λͺ½ν€ ν¨μΉμμ μ μΈν ν¨μλ€μ Placeholders.jsμμ μ μν μμ±κ³Ό CSS ν΄λΌμ€κ° μ λλ‘ μλνκ³ μλμ§ κ²μ¦νλ μν μ νλ€. μλ₯Ό λ€μ΄ #select-boxλΌλ id κ°μ κ°λ λλ‘λ€μ΄λ¦¬μ€νΈκ° μλ€κ³ κ°μ μ ν λ $("#select-box").change() λλ $("#select-box").click()μ μ½λ°± ν¨μλ₯Ό μ΄μ©νμ¬ κ²μ¦μ νλ κ²μ΄λ€.
$("#select-box").change(function () { if (typeof (applyPlaceholderAttributes) == typeof (Function)) { $("input:text, textarea").each(function () { applyPlaceholderAttributes($(this)); }); } });
μ΄λ° μμΌλ‘ applyPlaceholderAttributes() ν¨μλ₯Ό νΈμΆνλ©΄ μμμ 보μ μ ν΄μ€λ€. μ¬κΈ°μ if (typeof(applyPlaceholderAttributes) == typeof(Function)) { ... } λΈλ‘μ IE9 μ΄νμμ μ΄ λͺ½ν€ ν¨μΉλ₯Ό λ‘λνμ κ²½μ°μλ true, μλλ©΄ false κ°μ κ°λλ€.
λ§μ½ μ‘°κΈ λ ꡬ체μ μΌλ‘ input μ리먼νΈλ€μ λ²μλ₯Ό μ§μ νκ³ μΆλ€λ©΄ λͺ½ν€ ν¨μΉλ₯Ό νΈμΆν λ μλμ κ°μ ννλ‘ νΈμΆνλ©΄ λλ€.
<!--[if lte IE 9]> <script type="text/javascript" src="js/jquery.Placeholders.monkey.patch.js"></script> <script type="text/javascript"> Placeholders.For = { "inputs": ["input:text", "textarea"], "fakePasswords": ["#fake-password"], "forms": ["form"] }; </script> <![endif]-->
Placeholders.For λΌλ JSON κ°μ²΄λ₯Ό μ μΈν΄μ input μ리먼νΈλ€μ λ²μλ₯Ό μ ν μ μλ€. κ·Έλ κ² ν ν λλ‘λ€μ΄λ¦¬μ€νΈμ μ΄λ²€νΈ μμλ μλμ κ°μ΄ μ΄μ§ λ°κΏμ£Όλ©΄ λ.
if (typeof (applyPlaceholderAttributes) == typeof (Function)) { $.each(Placeholders.For.inputs, function (i, element) { $(element).each(function () { applyPlaceholderAttributes($(this)); }); }); }
input:password μμ± μ¬μ€μ
Placeholders.jsμ κ°μ₯ μΉλͺ μ μΈ λ¨μ (?)μ IE8 μ΄νμμλ ν¨μ€μλ νλκ° placeholder κ°μ΄ 보μ΄μ§ μκ³ ********μ κ°μ΄ μ€μ λ‘ ν¨μ€μλλ₯Ό μ λ ₯ν κ²μ²λΌ 보μΈλ€λ κ²μ΄λ€. IE9 μ΄μμμλ input μ리먼νΈμ type μμ±μ λ°κΏ μ μμ΄μ Placeholders.js λ΄λΆμ μΌλ‘ password νμ μμ text νμ μΌλ‘ λ°κΎΈμ΄μ placeholder μμ±κ°μ 보μ¬μ£Όλ€κ° μ€μ ν¨μ€μλ μ λ ₯μ μν΄ ν¬μ»€μ€λ₯Ό μ΄λμν€λ©΄ λ€μ text νμ μμ password νμ μΌλ‘ λ°κΎΈλ κΈ°λ₯μ νλ€.
νμ§λ§, IE8 μ΄νμμλ μ΄λ κ² typeμ λ°κΏ μ μκΈ° λλ¬Έμ μ΄κ²μ΄ λΆκ°λ₯νλ€. λͺ½ν€ ν¨μΉλ IE8μ μν΄ #fake-passwordλΌλ ν μ€νΈ νλλ₯Ό μ€λΉν΄ λκ³ μ¬μ©μκ° ν¨μ€μλ μ λ ₯μ μν΄ ν¬μ»€μ€λ₯Ό μ΄λμν€λ©΄ μλ ν¨μ€μλ νλλ₯Ό 보μ¬μ£Όκ³ , ν¬μ»€μ€λ₯Ό λ²μ΄λλ©΄ ν¨μ€μλ νλλ₯Ό κ°μΆκ³ fake password νλλ₯Ό 보μ¬μ£Όλ νμμΌλ‘ μ²λ¦¬νκ²λ νλ€. λ¬Όλ‘ , μ΄λ₯Ό μν΄ λ€μκ³Ό κ°μ λΆκ°μ μΈ λ§ν¬μ μ΄ νμνλ€.
<!--[if lte IE 8]> <input type="text" id="fake-password" name="fake-password" placeholder="Password" data-placeholder-password="password" required="required" style="display: none;" /> <![endif]-->
μ΄λ κ² ν΄λμΌλ©΄ IE8 μ΄νμ λΈλΌμ°μ μμλ§ μμ λ΄μ©μ λ‘λνκ² λκ³ μ΄κ²μ΄ κΈ°μ‘΄μ ν¨μ€μλ νλλ₯Ό λ체νλ μν μ νλ€,
form μ μ‘
Placeholders.jsμ μΉλͺ μ μΈ λ¬Έμ μ λ€ μ€ νλλ input μ리먼νΈμ value μμ±μ μ΄μ©νλ€λ³΄λ, μλ²λ‘ μ΄ placeholder κ°λ€μ μ μ‘νλ€λ κ²μ μλ€. λ°λΌμ, νΌ μ μ‘ μ§μ μ μ΄λ¬ν λΆνμν placeholder κ°λ€μ μ κ±°ν νμκ° μλ€. μ¬μ€, μ΄λΆλΆμ Placeholders.For JSON κ°μ²΄μ μ μ©μν€κ³ μ νλ form μ리먼νΈλ€μ μ§μ ν΄ λμΌλ©΄ μμμ λΆνμν κ°λ€μ κ±·μ΄λ΄ μ€λ€.
μ΄λ κ² Placeholders.js Monkey Patchμ μλμ리μ λν΄ κ°λ¨νκ² μ€λͺ μ ν΄ λ³΄μλ€.










