| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <div id=container> |
| <input type="text" id="f" size="5" maxlength="4"> |
| <input type="text" id="e" size="5" maxlength="4"> |
| <input type="text" id="d" size="5"> |
| <input type="text" id="c" size="5"> |
| <input type="text" id="j" size="5" maxlength="4"> |
| <input type="text" id="i" size="5" maxlength="4"> |
| <input type="text" id="h" size="5"> |
| <input type="text" id="g" size="5"> |
| <input type="text" id="k" size="5" maxlength="4"> |
| <input type="text" id="l" size="5" maxlength="0"> |
| <input type="text" id="m" size="5" maxlength=""> |
| <input type="text" id="n" size="5" maxlength="invalid"> |
| <input type="text" id="huge" size="5" maxlength="9999999999"> |
| </div> |
| |
| <script> |
| function domValueOf(id) { |
| return document.getElementById(id).value; |
| } |
| function visibleValueOf(id) { |
| var el = document.getElementById(id); |
| el.focus(); |
| document.execCommand('SelectAll'); |
| return document.getSelection().toString(); |
| } |
| |
| var fancyX = "x" + String.fromCharCode(0x305) + String.fromCharCode(0x332); |
| |
| debug("set value attribute that violates maxlength (with pasted value)"); |
| document.getElementById("f").focus(); |
| document.execCommand("InsertHTML", false, "123"); |
| document.getElementById("f").setAttribute('value', '12345'); |
| shouldBe("domValueOf('f')", "'123'"); // setAttribute() doesn't change the value because the value is dirty. |
| shouldBe("visibleValueOf('f')", "'123'"); |
| |
| debug("set value property that violates maxlength (with pasted value)"); |
| document.getElementById("e").focus(); |
| document.execCommand("InsertHTML", false, "123"); |
| document.getElementById("e").value = '12345'; |
| shouldBe("domValueOf('e')", "'12345'"); // Unlike setAttribute(), .value property changes the value. |
| shouldBe("visibleValueOf('e')", "'12345'"); |
| |
| debug("set maxlength attribute that is smaller than pasted value"); |
| document.getElementById("d").focus(); |
| document.execCommand("InsertHTML", false, "12345"); |
| document.getElementById("d").setAttribute('maxlength', 4); |
| shouldBe("domValueOf('d')", "'12345'"); |
| shouldBe("visibleValueOf('d')", "'12345'"); |
| |
| debug("set maxLength property that is smaller than pasted value"); |
| document.getElementById("c").focus(); |
| document.execCommand("InsertHTML", false, "12345"); |
| document.getElementById("c").maxLength = 4; |
| shouldBe("domValueOf('c')", "'12345'"); |
| shouldBe("visibleValueOf('c')", "'12345'"); |
| |
| debug("set value attribute that violates maxlength (with pasted value)"); |
| document.getElementById("j").focus(); |
| document.execCommand("InsertHTML", false, "123"); |
| document.getElementById("j").setAttribute('value', '12' + fancyX + '45'); |
| shouldBe("domValueOf('j')", "'123'"); |
| shouldBe("visibleValueOf('j')", "'123'"); |
| |
| debug("set value property that violates maxlength (with pasted value)"); |
| document.getElementById("i").focus(); |
| document.execCommand("InsertHTML", false, "123"); |
| document.getElementById("i").value = '12' + fancyX + '45'; |
| shouldBe("domValueOf('i')", "'12' + fancyX + '45'"); |
| shouldBe("visibleValueOf('i')", "'12' + fancyX + '45'"); |
| |
| debug("set maxlength attribute that is smaller than pasted value"); |
| document.getElementById("h").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| document.getElementById("h").setAttribute('maxlength', 4); |
| shouldBe("domValueOf('h')", "'12' + fancyX + '45'"); |
| shouldBe("visibleValueOf('h')", "'12' + fancyX + '45'"); |
| |
| debug("set maxLength property that is smaller than pasted value"); |
| document.getElementById("g").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| document.getElementById("g").maxLength = 4; |
| shouldBe("domValueOf('g')", "'12' + fancyX + '45'"); |
| shouldBe("visibleValueOf('g')", "'12' + fancyX + '45'"); |
| |
| debug("pasting too much text"); |
| document.getElementById("k").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| shouldBe("domValueOf('k')", "'12' + fancyX + '4'"); |
| shouldBe("visibleValueOf('k')", "'12' + fancyX + '4'"); |
| |
| debug("pasting too much text with maxlength=0"); |
| document.getElementById("l").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| shouldBe("domValueOf('l')", "''"); |
| shouldBe("visibleValueOf('l')", "''"); |
| |
| debug("empty maxlength should be ignored."); |
| document.getElementById("m").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| shouldBe("domValueOf('m')", "'12' + fancyX + '45'"); |
| shouldBe("visibleValueOf('m')", "'12' + fancyX + '45'"); |
| |
| debug("invalid maxlength should be ignored."); |
| document.getElementById("n").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| shouldBe("domValueOf('n')", "'12' + fancyX + '45'"); |
| shouldBe("visibleValueOf('n')", "'12' + fancyX + '45'"); |
| document.getElementById("huge").focus(); |
| document.execCommand("InsertHTML", false, "12x̲̅45"); |
| shouldBe("domValueOf('huge')", "'12' + fancyX + '45'"); |
| shouldBe("visibleValueOf('huge')", "'12' + fancyX + '45'"); |
| |
| document.getElementById('container').innerHTML = ''; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |