使用Redux-Form时,我不明白为什么我的输入值总是以字符串形式返回。我希望两个字段只是数字

时间:2016-06-29 05:18:52

标签: react-redux redux-form

我想验证我提交表单前我的两个名为 price 数量的字段是否正在接收带有数字类型的输入值,因此在我的验证中函数我写下面的代码:

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;
}

错误'请输入一个数字'在我的表单上显示,无论我是否输入数字,所以我控制台记录了价格和数量的输入值类型,结果证明它们总是字符串。我应该如何验证表格,以便查看价格和数量是否收到数字?

1 个答案:

答案 0 :(得分:1)

数据将始终作为字符串从输入字段出现。相反,您可以使用正则表达式来查看它只是容器编号而不是

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

你应该尝试这样的事情

const reg = /^\d+$/;

这将仅为您匹配数字。匹配此正则表达式并确定您是否有数字。

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

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

以下是您将如何使用它:

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

if (!/^\d*$/.test(value)) {
    errors['price'] = 'Please enter a number';
}
...