| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <style> |
| :invalid { |
| background-color: #ff0000; |
| } |
| </style> |
| </head> |
| <body> |
| <div id=parent> |
| <input type=number id=number> |
| <input id=another> |
| </div> |
| <script> |
| description('A number input fields with a bad input string should make validity.badInput true and have :invalid style.'); |
| |
| function colorOf(el) { |
| return document.defaultView.getComputedStyle(el, null).getPropertyValue('background-color'); |
| } |
| var invalidStyleColor = 'rgb(255, 0, 0)'; |
| |
| var number = document.getElementById('number'); |
| number.focus(); |
| debug('Initial state. The elment has no value.'); |
| shouldNotBe('colorOf(number)', 'invalidStyleColor'); |
| shouldBeFalse('number.validity.badInput'); |
| |
| debug("Type '-'. The element becomes badInput."); |
| document.execCommand('InsertText', false, '-'); |
| shouldBe('colorOf(number)', 'invalidStyleColor'); |
| shouldBeFalse('number.validity.valid'); |
| shouldBeTrue('number.validity.badInput'); |
| shouldBeEqualToString('number.value', ''); |
| |
| debug("Type '1' additionally. The element becomes valid."); |
| document.execCommand('InsertText', false, '1'); |
| shouldNotBe('colorOf(number)', 'invalidStyleColor'); |
| shouldBeFalse('number.validity.badInput'); |
| shouldBeEqualToString('number.value', '-1'); |
| |
| debug("Type 'a' additionally. The element becomes badInput again."); |
| document.execCommand('InsertText', false, 'a'); |
| shouldBe('colorOf(number)', 'invalidStyleColor'); |
| shouldBeTrue('number.validity.badInput'); |
| shouldBeEqualToString('number.value', ''); |
| |
| debug("The element losts focus. The element state should not be changed."); |
| document.getElementById('another').focus(); |
| shouldBe('colorOf(number)', 'invalidStyleColor'); |
| shouldBeTrue('number.validity.badInput'); |
| // Visible value is '-1a'. |
| number.focus(); |
| document.execCommand('SelectAll'); |
| shouldBeEqualToString('document.getSelection().toString()', '-1a'); |
| shouldBeEqualToString('number.value', ''); |
| |
| debug("The element losts a renderer. The element state should not be changed."); |
| shouldBeTrue('number.style.display = "none"; number.validity.badInput'); |
| |
| number.style.display = 'inline-block'; |
| number.focus(); |
| debug('A bad input should be cleared by value="".'); |
| shouldBeEqualToString('number.value = ""; document.execCommand("SelectAll"); document.getSelection().toString()', ''); |
| |
| document.getElementById('parent').innerHTML = ''; |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |