From 1d63e0f0436b5aa6b366107206407b134b25bceb Mon Sep 17 00:00:00 2001 From: Sander Hahn Date: Tue, 22 Apr 2014 11:12:55 +0200 Subject: [PATCH] only update input.value on change --- mithril.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mithril.js b/mithril.js index c4061228..02eab4c9 100644 --- a/mithril.js +++ b/mithril.js @@ -73,7 +73,7 @@ Mithril = m = new function app(window) { node = namespace === undefined ? window.document.createElement(data.tag) : window.document.createElementNS(namespace, data.tag) cached = { tag: data.tag, - attrs: setAttributes(node, data.attrs, {}, namespace), + attrs: setAttributes(node, data.tag, data.attrs, {}, namespace), children: build(node, data.children, cached.children, true, 0, namespace), nodes: [node] } @@ -81,7 +81,7 @@ Mithril = m = new function app(window) { } else { node = cached.nodes[0] - setAttributes(node, data.attrs, cached.attrs, namespace) + setAttributes(node, data.tag, data.attrs, cached.attrs, namespace) cached.children = build(node, data.children, cached.children, false, 0, namespace) cached.nodes.intact = true if (shouldReattach === true) parent.insertBefore(node, parent.childNodes[index] || null) @@ -124,7 +124,7 @@ Mithril = m = new function app(window) { return cached } - function setAttributes(node, dataAttrs, cachedAttrs, namespace) { + function setAttributes(node, tag, dataAttrs, cachedAttrs, namespace) { for (var attrName in dataAttrs) { var dataAttr = dataAttrs[attrName] var cachedAttr = cachedAttrs[attrName] @@ -144,6 +144,11 @@ Mithril = m = new function app(window) { else if (attrName === "className") node.setAttribute("class", dataAttr) else node.setAttribute(attrName, dataAttr) } + else if (attrName === "value" && tag === "input") { + if (node[attrName] !== dataAttr) { + node.setAttribute(attrName, dataAttr) + } + } else if (attrName in node) node[attrName] = dataAttr else node.setAttribute(attrName, dataAttr) }