| OLD | NEW |
| 1 description('valueMissing tests for radio buttons'); | 1 description('valueMissing tests for radio buttons'); |
| 2 | 2 |
| 3 var parent = document.createElement('div'); | 3 var parent = document.createElement('div'); |
| 4 document.body.appendChild(parent); | 4 document.body.appendChild(parent); |
| 5 | 5 |
| 6 debug('Without form element'); | 6 debug('Without form element'); |
| 7 parent.innerHTML = '<input name=victim type=radio required>' | 7 parent.innerHTML = '<input name=victim type=radio required>' |
| 8 + '<input name=victim type=radio>' | 8 + '<input name=victim type=radio>' |
| 9 + '<input name=victim type=radio>'; | 9 + '<input name=victim type=radio>'; |
| 10 var inputs = document.getElementsByName('victim'); | 10 var inputs = document.getElementsByName('victim'); |
| 11 debug('No checked button:'); | 11 debug('No checked button:'); |
| 12 shouldBeTrue('inputs[0].validity.valueMissing'); | 12 shouldBeTrue('inputs[0].validity.valueMissing'); |
| 13 shouldBeTrue('inputs[1].validity.valueMissing'); | 13 // The following result should be false because the element does not have |
| 14 shouldBeTrue('inputs[2].validity.valueMissing'); | 14 // "required". It conforms to HTML5, and this behavior has no practical |
| 15 // problems. |
| 16 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 17 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 15 debug('The second button has been checked:'); | 18 debug('The second button has been checked:'); |
| 16 inputs[1].checked = true; | 19 inputs[1].checked = true; |
| 17 shouldBeFalse('inputs[0].validity.valueMissing'); | 20 shouldBeFalse('inputs[0].validity.valueMissing'); |
| 18 shouldBeFalse('inputs[1].validity.valueMissing'); | 21 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 19 shouldBeFalse('inputs[2].validity.valueMissing'); | 22 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 20 debug('The first button has been checked:'); | 23 debug('The first button has been checked:'); |
| 21 inputs[0].checked = true; | 24 inputs[0].checked = true; |
| 22 shouldBeFalse('inputs[0].validity.valueMissing'); | 25 shouldBeFalse('inputs[0].validity.valueMissing'); |
| 23 shouldBeFalse('inputs[1].validity.valueMissing'); | 26 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 24 shouldBeFalse('inputs[2].validity.valueMissing'); | 27 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 25 debug('The third button has been checked:'); | 28 debug('The third button has been checked:'); |
| 26 inputs[2].checked = true; | 29 inputs[2].checked = true; |
| 27 shouldBeFalse('inputs[0].validity.valueMissing'); | 30 shouldBeFalse('inputs[0].validity.valueMissing'); |
| 28 shouldBeFalse('inputs[1].validity.valueMissing'); | 31 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 29 shouldBeFalse('inputs[2].validity.valueMissing'); | 32 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 30 | 33 |
| 31 debug(''); | |
| 32 debug('With form element'); | 34 debug('With form element'); |
| 33 parent.innerHTML = '<form>' | 35 parent.innerHTML = '<form>' |
| 34 + '<input name=victim type=radio required>' | 36 + '<input name=victim type=radio required>' |
| 35 + '<input name=victim type=radio>' | 37 + '<input name=victim type=radio>' |
| 36 + '<input name=victim type=radio>' | 38 + '<input name=victim type=radio>' |
| 37 + '</form>'; | 39 + '</form>'; |
| 38 inputs = document.getElementsByName('victim'); | 40 inputs = document.getElementsByName('victim'); |
| 39 debug('No checked button:'); | 41 debug('No checked button:'); |
| 40 shouldBeTrue('inputs[0].validity.valueMissing'); | 42 shouldBeTrue('inputs[0].validity.valueMissing'); |
| 41 shouldBeTrue('inputs[1].validity.valueMissing'); | 43 // The following result should be false. |
| 42 shouldBeTrue('inputs[2].validity.valueMissing'); | 44 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 45 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 43 debug('The first button has been checked:'); | 46 debug('The first button has been checked:'); |
| 44 inputs[0].checked = true; | 47 inputs[0].checked = true; |
| 45 shouldBeFalse('inputs[0].validity.valueMissing'); | 48 shouldBeFalse('inputs[0].validity.valueMissing'); |
| 46 shouldBeFalse('inputs[1].validity.valueMissing'); | 49 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 47 shouldBeFalse('inputs[2].validity.valueMissing'); | 50 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 48 debug('The second button has been checked:'); | 51 debug('The second button has been checked:'); |
| 49 inputs[1].checked = true; | 52 inputs[1].checked = true; |
| 50 shouldBeFalse('inputs[0].validity.valueMissing'); | 53 shouldBeFalse('inputs[0].validity.valueMissing'); |
| 51 shouldBeFalse('inputs[1].validity.valueMissing'); | 54 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 52 shouldBeFalse('inputs[2].validity.valueMissing'); | 55 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 53 debug('The third button has been checked:'); | 56 debug('The third button has been checked:'); |
| 54 inputs[2].checked = true; | 57 inputs[2].checked = true; |
| 55 shouldBeFalse('inputs[0].validity.valueMissing'); | 58 shouldBeFalse('inputs[0].validity.valueMissing'); |
| 56 shouldBeFalse('inputs[1].validity.valueMissing'); | 59 shouldBeFalse('inputs[1].validity.valueMissing'); |
| 57 shouldBeFalse('inputs[2].validity.valueMissing'); | 60 shouldBeFalse('inputs[2].validity.valueMissing'); |
| 58 | |
| 59 debug(''); | |
| 60 debug('Not in a radio button group'); | |
| 61 var requiredButton = document.createElement('input'); | |
| 62 requiredButton.type = 'radio'; | |
| 63 requiredButton.name = 'victim'; | |
| 64 requiredButton.required = true; | |
| 65 shouldBeFalse('requiredButton.validity.valueMissing'); | |
| 66 | |
| 67 parent.innerHTML = '<input name=victim type=radio required><input name=victim ty
pe=radio>'; | |
| 68 requiredButton = document.getElementsByName('victim')[0]; | |
| 69 var button = document.getElementsByName('victim')[1]; | |
| 70 shouldBeTrue('requiredButton.validity.valueMissing'); | |
| 71 shouldBeTrue('button.validity.valueMissing'); | |
| 72 parent.removeChild(button); | |
| 73 shouldBeFalse('button.validity.valueMissing'); | |
| 74 parent.removeChild(requiredButton); | |
| 75 shouldBeFalse('requiredButton.validity.valueMissing'); | |
| 76 | |
| OLD | NEW |