mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-24 10:20:19 +08:00
fix(Field): disallow minus when using digit type (#7114)
This commit is contained in:
parent
b62c0e32cf
commit
e7deea7195
@ -301,8 +301,8 @@ export default createComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.type === 'number' || this.type === 'digit') {
|
if (this.type === 'number' || this.type === 'digit') {
|
||||||
const allowDot = this.type === 'number';
|
const isNumber = this.type === 'number';
|
||||||
value = formatNumber(value, allowDot);
|
value = formatNumber(value, isNumber, isNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.formatter && trigger === this.formatTrigger) {
|
if (this.formatter && trigger === this.formatTrigger) {
|
||||||
|
@ -16,14 +16,22 @@ function trimExtraChar(value: string, char: string, regExp: RegExp) {
|
|||||||
return value.slice(0, index + 1) + value.slice(index).replace(regExp, '');
|
return value.slice(0, index + 1) + value.slice(index).replace(regExp, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function formatNumber(value: string, allowDot?: boolean) {
|
export function formatNumber(
|
||||||
|
value: string,
|
||||||
|
allowDot = true,
|
||||||
|
allowMinus = true
|
||||||
|
) {
|
||||||
if (allowDot) {
|
if (allowDot) {
|
||||||
value = trimExtraChar(value, '.', /\./g);
|
value = trimExtraChar(value, '.', /\./g);
|
||||||
} else {
|
} else {
|
||||||
value = value.split('.')[0];
|
value = value.split('.')[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (allowMinus) {
|
||||||
value = trimExtraChar(value, '-', /-/g);
|
value = trimExtraChar(value, '-', /-/g);
|
||||||
|
} else {
|
||||||
|
value = value.replace(/-/, '');
|
||||||
|
}
|
||||||
|
|
||||||
const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g;
|
const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g;
|
||||||
|
|
||||||
|
@ -99,19 +99,20 @@ test('isNumeric', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('formatNumber', () => {
|
test('formatNumber', () => {
|
||||||
expect(formatNumber('abc')).toEqual('');
|
|
||||||
expect(formatNumber('1.2')).toEqual('1');
|
|
||||||
expect(formatNumber('abc1.2')).toEqual('1');
|
|
||||||
expect(formatNumber('123.4.')).toEqual('123');
|
|
||||||
|
|
||||||
// with dot
|
// with dot
|
||||||
expect(formatNumber('abc', true)).toEqual('');
|
expect(formatNumber('abc')).toEqual('');
|
||||||
expect(formatNumber('1.2', true)).toEqual('1.2');
|
expect(formatNumber('1.2')).toEqual('1.2');
|
||||||
expect(formatNumber('abc1.2', true)).toEqual('1.2');
|
expect(formatNumber('abc1.2')).toEqual('1.2');
|
||||||
expect(formatNumber('123.4.', true)).toEqual('123.4');
|
expect(formatNumber('123.4.')).toEqual('123.4');
|
||||||
|
|
||||||
|
// without dot
|
||||||
|
expect(formatNumber('1.2', false)).toEqual('1');
|
||||||
|
expect(formatNumber('abc1.2', false)).toEqual('1');
|
||||||
|
expect(formatNumber('123.4.', false)).toEqual('123');
|
||||||
|
|
||||||
// minus
|
// minus
|
||||||
expect(formatNumber('-1.2')).toEqual('-1');
|
expect(formatNumber('-1.2', false)).toEqual('-1');
|
||||||
|
expect(formatNumber('-1.2', false, false)).toEqual('1');
|
||||||
expect(formatNumber('-1.2', true)).toEqual('-1.2');
|
expect(formatNumber('-1.2', true)).toEqual('-1.2');
|
||||||
expect(formatNumber('-1.2-', true)).toEqual('-1.2');
|
expect(formatNumber('-1.2-', true)).toEqual('-1.2');
|
||||||
expect(formatNumber('123-')).toEqual('123');
|
expect(formatNumber('123-')).toEqual('123');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user