diff --git a/modules/ui/fields/input.js b/modules/ui/fields/input.js index b6756dfa9..89b6039b3 100644 --- a/modules/ui/fields/input.js +++ b/modules/ui/fields/input.js @@ -98,7 +98,12 @@ export function uiFieldText(field, context) { .merge(buttons) .on('click', function(d) { d3_event.preventDefault(); - input.node().value = parsed(input.node().value) + d; + var vals = input.node().value.split(';'); + vals = vals.map(function(v) { + var num = parseFloat(v.trim(), 10); + return isFinite(num) ? clamped(num + d) : v.trim(); + }); + input.node().value = vals.join(';'); change()(); }); @@ -117,12 +122,6 @@ export function uiFieldText(field, context) { } - // parse as a number - function parsed(val) { - return parseFloat(val || 0, 10) || 0; - } - - // clamp number to min/max function clamped(num) { if (field.minValue !== undefined) { @@ -142,7 +141,12 @@ export function uiFieldText(field, context) { if (!onInput) { if (field.type === 'number' && val !== undefined) { - val = clamped(parsed(val)) + ''; + var vals = val.split(';'); + vals = vals.map(function(v) { + var num = parseFloat(v.trim(), 10); + return isFinite(num) ? clamped(num) : v.trim(); + }); + val = vals.join(';'); } utilGetSetValue(input, val || ''); }