0

我想在提交表单之前验证我的两个名为pricequantity的字段是否接收到一个数字类型的输入值,所以在我的验证函数中我编写了以下代码:

function validate(values) {
    const errors = {};

    _.map(FIELDS, (config, field) => {
        if (!values[field]) {
            errors[field] = `Please Enter ${config.label}`;
        }
        if (typeof values['price'] !== 'number') {
            errors['price'] = 'Please enter a number';
        }
        if (typeof values['quantity'] !== 'number') {
            errors['quantity'] = 'Please enter a number';
        }
    });

    return errors;
}

无论我是否输入数字,我的表单上都会显示错误“请输入数字”,因此我在控制台记录了价格和数量的 typeof 输入值,结果发现它们始终是字符串。我应该如何验证表格,以便我可以检查价格和数量是否收到数字?

4

1 回答 1

1

数据将始终以字符串形式从输入字段提供给您。相反,您可以使用正则表达式来查看它只包含数字而不是

typeof values['quantity'] !== 'number'

你应该尝试这样的事情

const reg = /^\d+$/;

这只会为您匹配数字。匹配这个正则表达式并确定你是否有数字。

如果要匹配没有空字符串的有符号和浮点数,请使用此正则表达式:

/^-?\d+\.?\d*$/

以下是您将如何使用它:

const numberRegex = /^-?\d+\.?\d*$/;

if (!/^\d*$/.test(value)) {
    errors['price'] = 'Please enter a number';
}
...
于 2016-06-29T05:35:56.227 回答