From e792ed0d33d3ca110d8de76e2fb86047277b5d1e Mon Sep 17 00:00:00 2001 From: Pelle Wessman Date: Wed, 20 Jan 2021 00:36:56 +0100 Subject: [PATCH] Don't type cast non-sensible values Fixes #186 --- lib/fields.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/fields.js b/lib/fields.js index a002aeb..a5c349d 100644 --- a/lib/fields.js +++ b/lib/fields.js @@ -12,6 +12,9 @@ var validators = require('./validators'); var coerceArray = function (arr) { return is.array(arr) && arr.length > 0 ? arr : []; }; +var isSingleFieldData = function (raw_data) { + return is.string(raw_data) || is.number(raw_data); +}; var nameSeparatorRegExp = /[_-]/g; exports.string = function (options) { @@ -21,10 +24,7 @@ exports.string = function (options) { f.widget = f.widget || forms.widgets.text(opt.attrs || {}); f.parse = function (raw_data) { - if (typeof raw_data !== 'undefined' && raw_data !== null) { - return String(raw_data); - } - return ''; + return isSingleFieldData(raw_data) ? String(raw_data) : ''; }; f.bind = function (raw_data) { var b = assign({}, f); // clone field object: @@ -112,10 +112,10 @@ exports.number = function (opt) { var f = exports.string(opts); f.parse = function (raw_data) { - if (raw_data === null || raw_data === '') { + if (raw_data === '') { return NaN; } - return Number(raw_data); + return isSingleFieldData(raw_data) ? Number(raw_data) : NaN; }; return f; }; @@ -126,7 +126,7 @@ exports['boolean'] = function (opt) { f.widget = opts.widget || forms.widgets.checkbox(opts.attrs || {}); f.parse = function (raw_data) { - return !!raw_data; + return raw_data && isSingleFieldData(raw_data); }; return f; };