diff --git a/__tests__/number.spec.js b/__tests__/number.spec.js index dd4e4bb..9c6bb39 100644 --- a/__tests__/number.spec.js +++ b/__tests__/number.spec.js @@ -29,7 +29,21 @@ describe('number', () => { }); }); - it('works for no-required', (done) => { + it('works for no-required in case of empty string', (done) => { + new Schema({ + v: { + type: 'number', + required: false, + }, + }).validate({ + v: '', + }, (errors) => { + expect(errors).toBeFalsy(); + done(); + }); + }); + + it('works for required', (done) => { new Schema({ v: { type: 'number', diff --git a/src/validator/number.js b/src/validator/number.js index 7ac41e7..3c20570 100644 --- a/src/validator/number.js +++ b/src/validator/number.js @@ -15,6 +15,9 @@ function number(rule, value, callback, source, options) { const errors = []; const validate = rule.required || (!rule.required && source.hasOwnProperty(rule.field)); if (validate) { + if (value === '') { + value = undefined; + } if (isEmptyValue(value) && !rule.required) { return callback(); }