我想验证我提交表单前我的两个名为 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;
}
错误'请输入一个数字'在我的表单上显示,无论我是否输入数字,所以我控制台记录了价格和数量的输入值类型,结果证明它们总是字符串。我应该如何验证表格,以便查看价格和数量是否收到数字?
答案 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';
}
...