From 1d55454e61bf18cc2d6fe948c4528a680f67efe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=B4=9C=C9=B4=D0=B2=CA=8F=D1=82=E1=B4=87?= Date: Tue, 25 Aug 2020 21:47:55 +0800 Subject: [PATCH] fix(runtime-dom): avoid setting unchanged input value (#1937) fix #1935 (fix v-model usage with HTML5 validation) --- packages/runtime-dom/src/directives/vModel.ts | 5 ++++- packages/runtime-dom/src/modules/props.ts | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/src/directives/vModel.ts b/packages/runtime-dom/src/directives/vModel.ts index 0516569f1..23ebb07b3 100644 --- a/packages/runtime-dom/src/directives/vModel.ts +++ b/packages/runtime-dom/src/directives/vModel.ts @@ -85,7 +85,10 @@ export const vModelText: ModelDirective< return } } - el.value = value == null ? '' : value + const newValue = value == null ? '' : value + if (el.value !== newValue) { + el.value = newValue + } } } diff --git a/packages/runtime-dom/src/modules/props.ts b/packages/runtime-dom/src/modules/props.ts index ebecc8972..1a50d612b 100644 --- a/packages/runtime-dom/src/modules/props.ts +++ b/packages/runtime-dom/src/modules/props.ts @@ -28,7 +28,10 @@ export function patchDOMProp( // store value as _value as well since // non-string values will be stringified. el._value = value - el.value = value == null ? '' : value + const newValue = value == null ? '' : value + if (el.value !== newValue) { + el.value = newValue + } return } if (value === '' && typeof el[key] === 'boolean') {