Numeric Text Box Format

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • progdoctor
    New Member
    • Jul 2008
    • 13

    Numeric Text Box Format

    I have scripts that can format a HTML input value as a numeric format or money format.. Hope its useful

    Code:
    function XFormat(arrayCtl)
    {
    	this.arrCtl = arrayCtl;
    	if (typeof XFormat._initialized == 'undefined') 
    	{
    		XFormat.prototype.setKeyPress = function(){return 0;};
    		XFormat.prototype.setFocus = function(){this.select();};
    		XFormat.prototype.setBlur = function(){return 0;};
    		XFormat.prototype.setFormat = function (){return 0;}; 
    
    		XFormat._initialized = true;
    	}
    }
    
    function XFormatNumber(arrayCtl)
    {
    	XFormat.call(this,arrayCtl);
    	if (typeof XFormatNumber._initialized == 'undefined') 
    	{
    		XFormatNumber.prototype.setKeyPress = function()
    		{
    			//mengizinkan karakter '-'(minus),'0-9'(numerik)
    			if(event.keyCode==45)
    				return true;
    			else if(event.keyCode>=48 && event.keyCode<=57)
    				return true;
    			else
    				return false;
    		};
    		
    		XFormatNumber.prototype.setBlur = function()
    		{
    			if(this.value=='' || isNaN(this.value))
    				this.value = 0;
    		};
    		
    		XFormatNumber.prototype.setFormat = function () 
    		{
    			if(this.arrCtl.length>0)
    			{
    				for(var i=0;i<this.arrCtl.length;i++)
    				{
    					this.arrCtl[i].style.textAlign='right';
    					this.arrCtl[i].onkeypress = this.setKeyPress;
    					this.arrCtl[i].onfocus = this.setFocus ;
    					this.arrCtl[i].onblur= this.setBlur;
    				}
    			}
    		};
    		
    		XFormatNumber._initialized = true;
    	}
    }
    XFormatNumber.prototype = new XFormat();
    
    function XFormatMoney(arrayCtl)
    {
    	XFormatNumber.call(this,arrayCtl);
    	if (typeof XFormatMoney._initialized == 'undefined') 
    	{	
    		XFormatNumber.prototype.setKeyPress = function()
    		{
    			//mengizinkan karakter '-'(minus),'.'(separator desimal),'0-9'(numerik)
    			if(event.keyCode >=45 && event.keyCode<=46)
    				return true;
    			else if(event.keyCode>=48 && event.keyCode<=57)
    				return true;
    			else
    				return false;
    		};
    		
    		XFormatMoney.prototype.setFocus =  this.getOriginalValue;
    
    		XFormatMoney.prototype.setBlur = function()
    		{
    			var nStr = this.value+'';
    			var rgx = /(\d+)(\d{3})/;
    			var x;
    			if(this.value=='' || isNaN(this.value))
    				{this.value = '0.00';}
    			else
    			{
    				x = nStr.split('.');
    				var x1 = x[0];
    				var x2 = x.length > 1 ? '.' + x[1] : '.00';
    				while (rgx.test(x1)) 
    				{
    					x1 = x1.replace(rgx, '$1' + ',' + '$2');
    				}
    				if(x.length > 1 && x[1].length >2)
    					x2 = '.'+x[1].substring(0,2);
    				this.value = x1 + x2;
    			}
    		};
    		
    		XFormatMoney._initialized = true;
    	}
    }
    XFormatMoney.prototype = new XFormatNumber();
    XFormatMoney.prototype.getOriginalValue = function()
    {
    	var originalValue=0;
    	var re = /,/;
    	if(this.value!='')
    	{
    		originalValue=this.value.replace(re,'');
    		if(parseFloat(originalValue).length != originalValue)
    			originalValue = parseFloat(originalValue);
    	}
    	this.value = originalValue;
    	this.select();
    }
    and this is how to use that functions

    Code:
    txtMoney1 = document.getElementById('txtMoney1');
    txtMoney2 = document.getElementById('txtMoney2');
    txtNumber1 = document.getElementById('txtNumber1');
    txtNumber2 = document.getElementById('txtNumber2');
    	
    oXFormatNumber = new XFormatNumber([txtNumber1,txtNumber2]);
    oXFormatNumber.setFormat();
    oXFormatMoney =new XFormatMoney([txtMoney1,txtMoney2]);
    oXFormatMoney.setFormat();
Working...