Все делается не так. Пользователь вводит что хочет, а на его счет записывается что получилось.
var isNumber = function(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
};
//...
case 5: // double
if (!isNumber(value)) throw errmsg.number;
value = parseFloat(value.replace(",", "."));