diff --git a/packages/marko/src/runtime/vdom/VElement.js b/packages/marko/src/runtime/vdom/VElement.js index f5ee0c8bb..229ec1cba 100644 --- a/packages/marko/src/runtime/vdom/VElement.js +++ b/packages/marko/src/runtime/vdom/VElement.js @@ -180,7 +180,7 @@ VElement.prototype = { } if (tagName === "textarea") { - el.value = this.___value; + el.defaultValue = el.value = this.___value; } } diff --git a/packages/marko/src/runtime/vdom/morphdom/index.js b/packages/marko/src/runtime/vdom/morphdom/index.js index 5de17ac00..bfade90e2 100644 --- a/packages/marko/src/runtime/vdom/morphdom/index.js +++ b/packages/marko/src/runtime/vdom/morphdom/index.js @@ -88,7 +88,9 @@ function morphdom(fromNode, toNode, doc, componentsContext) { ] = realNode; } - morphChildren(realNode, vNode, parentComponent); + if (vNode.___nodeName !== "textarea") { + morphChildren(realNode, vNode, parentComponent); + } } onNodeAdded(realNode, componentsContext); diff --git a/packages/marko/test/components-browser/fixtures/form-controls-default-value/index.marko b/packages/marko/test/components-browser/fixtures/form-controls-default-value/index.marko new file mode 100644 index 000000000..1acfc8fd0 --- /dev/null +++ b/packages/marko/test/components-browser/fixtures/form-controls-default-value/index.marko @@ -0,0 +1,6 @@ +class {} + + + + + diff --git a/packages/marko/test/components-browser/fixtures/form-controls-default-value/test.js b/packages/marko/test/components-browser/fixtures/form-controls-default-value/test.js new file mode 100644 index 000000000..487b52614 --- /dev/null +++ b/packages/marko/test/components-browser/fixtures/form-controls-default-value/test.js @@ -0,0 +1,14 @@ +var expect = require("chai").expect; + +module.exports = function(helpers) { + var component = helpers.mount(require.resolve("./index.marko")); + + expect(component.getEl("a")).has.property("defaultValue", "abc"); + expect(component.getEl("a")).has.property("defaultChecked", true); + + expect(component.getEl("b")).has.property("defaultValue", "abc"); + expect(component.getEl("b")).has.property("defaultChecked", false); + + expect(component.getEl("c")).has.property("defaultValue", "abc"); + expect(component.getEl("d")).has.property("defaultValue", "abc"); +};