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
		
	}