You must override both the 'formatter' and 'parser' functions.
$('#nn').numberbox({
formatter: function(value){
if (!value) return value;
value = value + '';
var opts = $(this).numberbox('options');
var s1 = value, s2 = '';
var dpos = value.indexOf('.');
if (dpos >= 0){
s1 = value.substring(0, dpos);
s2 = value.substring(dpos+1, value.length);
}
if (opts.groupSeparator){
var p = /(\d+)(\d{3})/;
while(p.test(s1)){
s1 = s1.replace(p, '$1' + opts.groupSeparator + '$2');
}
}
if (s2){
return opts.prefix + s1 + opts.decimalSeparator + s2 + opts.suffix;
} else {
return opts.prefix + s1 + opts.suffix;
}
},
parser: function(s){
s = s + '';
var opts = $(this).numberbox('options');
if (parseFloat(s) != s){
if (opts.prefix) s = $.trim(s.replace(new RegExp('\\'+$.trim(opts.prefix),'g'), ''));
if (opts.suffix) s = $.trim(s.replace(new RegExp('\\'+$.trim(opts.suffix),'g'), ''));
if (opts.groupSeparator) s = $.trim(s.replace(new RegExp('\\'+opts.groupSeparator,'g'), ''));
if (opts.decimalSeparator) s = $.trim(s.replace(new RegExp('\\'+opts.decimalSeparator,'g'), '.'));
s = s.replace(/\s/g,'');
}
var val = parseFloat(s).toFixed(opts.precision);
if (isNaN(val)) {
val = '';
} else if (typeof(opts.min) == 'number' && val < opts.min) {
val = opts.min.toFixed(opts.precision);
} else if (typeof(opts.max) == 'number' && val > opts.max) {
val = opts.max.toFixed(opts.precision);
}
return val;
}
})