diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts
index adfdc8e3ba..11e2f43ee9 100644
--- a/src/runtime/internal/dom.ts
+++ b/src/runtime/internal/dom.ts
@@ -305,8 +305,17 @@ export function set_attributes(node: Element & ElementCSSInlineStyle, attributes
} else if (key === '__value') {
(node as any).value = node[key] = attributes[key];
} else if (descriptors[key] && descriptors[key].set) {
+ // For example, if an element has spread attributes,
+ // when a user inputs a value, spread attributes also will be updated, and it spoils the next user's input.
+ // So we need to skip updating if it's not changed.
+ // e.g.
+ //
+ //
if (node[key] !== attributes[key]) {
- node[key] = attributes[key];
+ node[key] = attributes[key];
}
} else {
attr(node, key, attributes[key]);