diff --git a/mithril.js b/mithril.js index bba36074..295aea2d 100644 --- a/mithril.js +++ b/mithril.js @@ -346,7 +346,7 @@ var m = (function app(window, undefined) { //- when using CSS selectors (e.g. `m("[style='']")`), style is used as a string, but it's an object in js else if (attrName in node && !(attrName === "list" || attrName === "style" || attrName === "form" || attrName === "type")) { //#348 don't set the value if not needed otherwise cursor placement breaks in Chrome - if (node[attrName] !== dataAttr) node[attrName] = dataAttr + if (attrName != "input" || node[attrName] !== dataAttr) node[attrName] = dataAttr } else node.setAttribute(attrName, dataAttr) } diff --git a/tests/e2e/tests.js b/tests/e2e/tests.js index be516c1e..ae1dff2a 100644 --- a/tests/e2e/tests.js +++ b/tests/e2e/tests.js @@ -409,8 +409,13 @@ test("mixing trusted content w/ td", function() { equal(dummyEl.childNodes[1].nodeName, "I") }) -test("", function() { +test("0 should not be treated as empty string", function() { m.render(dummyEl, m("input", {value: ""})) m.render(dummyEl, m("input", {value: 0})) equal(dummyEl.childNodes[0].value, "0") }) + +test("empty value in ') +})