Просмотр исходного кода

fix(runtime-dom): avoid setting unchanged input value (#1937)

fix #1935 (fix v-model usage with HTML5 validation)
ᴜɴвʏтᴇ 5 лет назад
Родитель
Сommit
1d55454e61
2 измененных файлов с 8 добавлено и 2 удалено
  1. 4 1
      packages/runtime-dom/src/directives/vModel.ts
  2. 4 1
      packages/runtime-dom/src/modules/props.ts

+ 4 - 1
packages/runtime-dom/src/directives/vModel.ts

@@ -85,7 +85,10 @@ export const vModelText: ModelDirective<
         return
         return
       }
       }
     }
     }
-    el.value = value == null ? '' : value
+    const newValue = value == null ? '' : value
+    if (el.value !== newValue) {
+      el.value = newValue
+    }
   }
   }
 }
 }
 
 

+ 4 - 1
packages/runtime-dom/src/modules/props.ts

@@ -28,7 +28,10 @@ export function patchDOMProp(
     // store value as _value as well since
     // store value as _value as well since
     // non-string values will be stringified.
     // non-string values will be stringified.
     el._value = value
     el._value = value
-    el.value = value == null ? '' : value
+    const newValue = value == null ? '' : value
+    if (el.value !== newValue) {
+      el.value = newValue
+    }
     return
     return
   }
   }
   if (value === '' && typeof el[key] === 'boolean') {
   if (value === '' && typeof el[key] === 'boolean') {