diff --git a/src/lib/annotations/annotations.html b/src/lib/annotations/annotations.html
index 1060b61b..9e305d96 100644
--- a/src/lib/annotations/annotations.html
+++ b/src/lib/annotations/annotations.html
@@ -187,9 +187,6 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
// add annotation data from attributes to the `annotation` for node `node`
// TODO(sjmiles): the distinction between an `annotation` and
// `annotation data` is not as clear as it could be
- // Walk attributes backwards, since removeAttribute can be vetoed by
- // IE in certain cases (e.g. ), resulting in the
- // attribute staying in the attributes list
_parseNodeAttributeAnnotations: function(node, annotation) {
for (var i=node.attributes.length-1, a; (a=node.attributes[i]); i--) {
var n = a.name, v = a.value;
@@ -244,6 +241,11 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
v = v.substring(0, colon);
customEvent = true;
}
+ // Clear attribute before removing, since IE won't allow removing
+ // `value` attribute if it previously had a value
+ if (node.localName == 'input' && n == 'value') {
+ node.setAttribute(n, '');
+ }
// Remove annotation
node.removeAttribute(n);
// Case hackery: attributes are lower-case, but bind targets
diff --git a/test/unit/bind-elements.html b/test/unit/bind-elements.html
index 0f0693a7..f3b5aa70 100644
--- a/test/unit/bind-elements.html
+++ b/test/unit/bind-elements.html
@@ -25,6 +25,7 @@
{{text}}{{computeFromTrickyLiterals(3, 'tricky\,\'zot\'')}}
+