Skip to content

Commit

Permalink
fix: parse native number fields closes #4313
Browse files Browse the repository at this point in the history
  • Loading branch information
logaretm committed Jun 20, 2023
1 parent 77345c4 commit 6a3f9f1
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/warm-dolls-attack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'vee-validate': patch
---

fix: parse native number fields closes #4313
10 changes: 9 additions & 1 deletion packages/vee-validate/src/utils/events.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import { hasCheckedAttr, isNativeMultiSelect, isNativeSelect, isEvent } from './assertions';
import { getBoundValue, hasValueBinding } from './vnode';

function parseInputValue(el: HTMLInputElement) {
if (el.type === 'number') {
return el.valueAsNumber;
}

return el.value;
}

export function normalizeEventValue(value: Event | unknown): unknown {
if (!isEvent(value)) {
return value;
Expand Down Expand Up @@ -33,5 +41,5 @@ export function normalizeEventValue(value: Event | unknown): unknown {
return selectedOption ? getBoundValue(selectedOption) : input.value;
}

return input.value;
return parseInputValue(input);
}
22 changes: 22 additions & 0 deletions packages/vee-validate/tests/useField.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -871,4 +871,26 @@ describe('useField()', () => {
expect(validator).toHaveBeenCalledTimes(2);
expect(field.errorMessage.value).toBe(undefined);
});

test('handleChange parses input[type=number] value', async () => {
let field!: FieldContext;

mountWithHoc({
setup() {
field = useField('field', undefined);
const { handleChange } = field;

return {
handleChange,
};
},
template: `<input type="number" @change="handleChange" />`,
});

await flushPromises();
const input = document.querySelector('input') as HTMLInputElement;
setValue(input, '123');
await flushPromises();
expect(field.value.value).toBe(123);
});
});

0 comments on commit 6a3f9f1

Please sign in to comment.