Numeric input with dp limit
as you type the input is checked for number of dps
by Ben Clayton
HTML
free input <input class="report" autocomplete="off" value="" ><br/>
numeric 0 dps <input class="report" autocomplete="off" value="" data-dps="0"><br/>
numeric 1 dps <input class="report" autocomplete="off" value="" data-dps="1"><br/>
numeric 2 dps <input class="report" autocomplete="off" value="" data-dps="2"><br/>
numeric 3 dps <input class="report" autocomplete="off" value="" data-dps="3"><br/>
numeric 4 dps <input class="report" autocomplete="off" value="" data-dps="4"><br/>
JavaScript
$(document).ready(function () {
$(".report").bind('keyup change',function(e){
return change_detect_formatdp(e,this)
});
});
function change_detect_formatdp(e,inp){
var id=$(inp).data('id');
var dps = $(inp).data('dps');
if (dps==null) return;
var rep=0;
var v = $(inp).attr('value');
if( v!=(v=v.replace(/[^\-0-9\.]/g,'')) )rep=1;
if(dps==0) if( v!=(v=v.replace(/\./g,'')) )rep=1;
if ( (v =='-' || v=='') && !rep ){return}
var m=Math.pow(10,dps);
if( v!= (v=Math.round(v * m) / m)) rep=1;
if(rep) $(inp).attr('value',v);
return true
}