diff --git a/packages/opendesign/src/components/input-number/OInputNumber.vue b/packages/opendesign/src/components/input-number/OInputNumber.vue index 651a3ce400bdd57f63cfda529fb679c679668642..973cccfda0735ccae55ef5fd78299b41fad022f2 100644 --- a/packages/opendesign/src/components/input-number/OInputNumber.vue +++ b/packages/opendesign/src/components/input-number/OInputNumber.vue @@ -106,6 +106,10 @@ const emits = defineEmits<{ const currentValue = ref(props.modelValue ?? props.defaultValue); const isValid = ref(isValidNumber(currentValue.value, props.min, props.max)); +let numberValue = getRealValue(currentValue.value); +let lastNumberValue = numberValue; +let lastInputValue = currentValue.value; + watch( () => props.modelValue, (val) => { @@ -115,13 +119,13 @@ watch( } else { currentValue.value = val; } + numberValue = getRealValue(currentValue.value); + lastNumberValue = numberValue; + lastInputValue = currentValue.value; // console.log('watch', val); } ); -let numberValue = getRealValue(currentValue.value); -let lastNumberValue = numberValue; - const canAdd = computed(() => { if (props.disabled) { return false; @@ -159,7 +163,9 @@ const updateValue = (val: string) => { if (numberValue !== lastNumberValue) { emits('change', numberValue); - } else { + } + + if (val !== lastInputValue) { if (isFunction(props.format)) { currentValue.value = props.format(numberValue); } else { @@ -169,6 +175,7 @@ const updateValue = (val: string) => { } lastNumberValue = numberValue; + lastInputValue = currentValue.value; return numberValue; }; @@ -177,7 +184,7 @@ const onInput = (val: string, evt: Event) => { }; const onFocus = (val: string, evt: FocusEvent) => { - lastNumberValue = numberValue; + // lastNumberValue = numberValue; emits('focus', numberValue, evt); // console.log('focus', numberValue); }; @@ -251,7 +258,7 @@ const controlClick = (type: 'plus' | 'minus', e: MouseEvent) => {