diff --git a/src/compile/nodes/Element.ts b/src/compile/nodes/Element.ts index c060edc1f8..4d22960de3 100644 --- a/src/compile/nodes/Element.ts +++ b/src/compile/nodes/Element.ts @@ -473,7 +473,9 @@ export default class Element extends Node { }); } - if (checkTypeAttribute() !== 'checkbox') { + const type = checkTypeAttribute(); + + if (type !== 'checkbox' && type !== 'radio') { component.error(binding, { code: `invalid-binding`, message: `'${name}' binding can only be used with ` diff --git a/test/runtime/samples/binding-input-radio-checked/_config.js b/test/runtime/samples/binding-input-radio-checked/_config.js index 85193ffc3f..9b55b5c94e 100644 --- a/test/runtime/samples/binding-input-radio-checked/_config.js +++ b/test/runtime/samples/binding-input-radio-checked/_config.js @@ -20,7 +20,26 @@ export default {
foo false
bar true
-baz false
`, +baz false
+ `, + + ssrHtml: ` + + + + + + +foo false
+bar true
+baz false
+ `, test(assert, component, target, window) { const inputs = target.querySelectorAll('input'); @@ -31,6 +50,7 @@ export default { const event = new window.Event('change'); inputs[0].checked = true; + assert.equal(inputs[1].checked, false); inputs[0].dispatchEvent(event); assert.htmlEqual(target.innerHTML, `